Internet_Explore 2024-05-22 20:09 采纳率: 20%
浏览 2
已结题

[NOIP2005] 过河 9pts求调!

[NOIP2005] 过河
9pts
看样子是要大改了

#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;
}
  • 写回答

5条回答 默认 最新

  • Internet_Explore 2024-05-30 12:21
    关注

    我在班上悬赏10元给我调,终于有大佬给我调出来了

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月30日
  • 创建了问题 5月22日