记录编号 238797 评测结果 AAAAAAAAAA
题目名称 [NOIP 2005]过河 最终得分 100
用户昵称 GravatarLOSER 是否通过 通过
代码语言 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(){;}