记录编号 |
238797 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2005]过河 |
最终得分 |
100 |
用户昵称 |
LOSER |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2016-03-19 14:38:24 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define mem(arr,arl) memset(arr,arl,sizeof(arr))
using namespace std;
const int winner=200010;
const int Loser=110;
int L,s,t,n,stone[Loser],f[winner];
int QuickRead(){
int f=1,x=0;
char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if (ch=='-')f=-1;
else x=ch-'0';
ch=getchar();
while (ch>='0'&&ch<='9') {
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
int MY(){
freopen("river.in","r",stdin);
freopen("river.out","w",stdout);
mem(stone,0);
L=QuickRead(); s=QuickRead();
t=QuickRead(); n=QuickRead();
for(int i=1;i<=n;i++){
stone[i]=QuickRead();
}
sort(stone+1,stone+n+1);
int main;
for(int i=1;i<=n;i++){
main=stone[i]-stone[i-1];
if(main>t*10){
main=((main/t)-9)*t;
for(int j=i;j<=n;j++)stone[j]-=main;
}
}
L=stone[n];
for(int i=1;i<=L+t;i++)f[i]=0x7f7f7f7f;
int Node,oh=1;
for(int i=1;i<=L+t;i++){
if(stone[oh]==i){
oh++;
for(int j=s;j<=t&&j<=i;j++){
f[i]=min(f[i],f[i-j]+1);
//printf(" %d\n",f[i]);
}
}
else for(int j=s;j<=t&&j<=i;j++){
f[i]=min(f[i],f[i-j]);
}
}
int ans=0x7f7f7f7f;
for(int i=L;i<=L+t;i++){
//printf("%d\n",f[i]);
if(f[i]<ans)ans=f[i];
}
//printf("\n");
printf("%d\n",ans);
return 0;
}
int YOU=MY();
int main(){;}