社区讨论
55pts求助,离散化死活写不过
P1052[NOIP 2005 提高组] 过河参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m00oqa3a
- 此快照首次捕获于
- 2024/08/19 15:39 2 年前
- 此快照最后确认于
- 2024/08/19 17:20 2 年前
CPP
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int mod=2520;
long long f[900000],a[110],p[900000];
int main(){
long long l;
cin>>l;
long long s,t,m;
cin>>s>>t>>m;
for(int i=1;i<=m;i++){
cin>>a[i];
}
sort(a+1,a+m+1);
a[m+1]=l;
if(s==t){
int ans=0;
for(int i=1;i<=m;i++){
if(a[i]%s==0)ans++;
}
cout<<ans<<endl;
return 0;
}
for(int i=1;i<=m+1;i++){
int pl=a[i]-a[i-1];
if(pl/mod!=0){
pl=pl%mod+mod;
}
a[i]=a[i-1]+pl;
p[a[i]]=1;
//cout<<a[i]<<endl;
}
l=a[m+1];p[l]=0;
for(int i=1;i<=l+mod;i++){
f[i]=99999999;
}
for(int i=1;i<=l+mod;i++){
for(int j=s;j<=t;j++){
if(i-j<0)continue;
f[i]=min(f[i],f[i-j]);
}
f[i]+=p[i];
}
long long ans=9999999;
for(int i=a[m];i<=l+mod;i++){
ans=min(ans,f[i]);
}
cout<<ans<<endl;
return 0;
}
码风乱轻喷qwq
回复
共 0 条回复,欢迎继续交流。
正在加载回复...