/ Vijos / 讨论 / 过河 /

这回怎么还不对呢?究竟哪错了?

#include<iostream>
#include<stdlib.h>
using namespace std;
int l,s,t,m,d;
int a[10000000];
bool vi[10000000]={0};
int b[200]={0};
int c[200]={0};
void init()
{
cin>>l>>s>>t>>m;
d=l;l=0;
for(int i=1;i<=m;i++)
{
cin>>b[i];
c[i]=b[i]-b[i-1];
}
}
int main()
{
init();
for(int i=1;i<=m;i++)if(c[i]>300)c[i]=300;
for(int i=1;i<=m;i++)
{
l+=c[i];
vi[l]=1;
}
if(d-b[m]>300)l+=300;
else l=l+d-b[m];
for(int i=1;i<=l+t;i++)
a[i]=1000;a[0]=0;
//if(s<t)
for(int i=0;i<=l;i++)
{
for(int j=s;j<=t;j++)
{
if(vi[i]==1&&a[i+j]>a[i]+1)a[i+j]=a[i]+1;
if(vi[i]==0&&a[i+j]>a[i])a[i+j]=a[i];
}

}
int q=1000;
for(int i=l;i<=l+t-1;i++)
{
if(a[i]<q)q=a[i];
}
cout<<q;
//system("pause");
return 0;
}

1 条评论

  • 1

信息

ID
1002
难度
7
分类
动态规划 点击显示
标签
递交数
25209
已通过
4368
通过率
17%
被复制
64
上传者