9pts 求调
查看原帖
9pts 求调
964645
pies_0x楼主2024/5/22 20:41

Wrong Answer

#include<bits/stdc++.h>
using namespace std;

#define M 105
#define int long long

int len,s,t,m;
map<int,bool>stone;
int stones[M];
map<int,int>dp;

signed main()
{
	scanf("%lld%lld%lld%lld",&len,&s,&t,&m);
	for(int i=1;i<=m;++i)
	{
		int t;
		scanf("%lld",&t);
		stones[i]=t;
		stone[t]=1;
	}
	sort(stones+1,stones+m+1);
	for(int i=1;i<=m;++i)
	{
		stone[stones[i]]=0;
		stones[i]=stones[i-1]+(stones[i]-stones[i-1])%72;
		stone[stones[i]]=1;
	}
	len=stone[m]+(len-stone[m])%72;
	for(int i=1;i<=len;++i)
	{
		dp[i]=INT_MAX;
		for(int j=max(0ll,i-t);j<=i-s;++j)
			dp[i]=min(dp[i],dp[j]+stone[i]);
	}
	int ans=INT_MAX;
	for(int i=max(0ll,len-t);i<=len;++i)
		ans=min(ans,dp[i]);
	printf("%lld",ans);
	return 0;
}
2024/5/22 20:41
加载中...