大佬求条
查看原帖
大佬求条
708338
livedreamlmy楼主2022/9/17 11:15
#include<bits/stdc++.h>
#define N 1100000
#define M 105
using namespace std;
const int Mod=90;
int stone[M];
int a[N];
int f[N];
int l,s,t,n;
void print1()
{
    int tot=0;
    for(int i=1;i<=n;i++)
        if(stone[i]%s==0)
            tot++;
    cout<<tot<<"\n";
    exit(0);
}
int main()
{
    cin>>l>>s>>t>>n;
    if(l==0)
        cout<<0;
    for(int i=1;i<=n;i++)
        cin>>stone[i];
    if(s==t)
        print1();
    sort(stone+1,stone+n+1);
    for(int i=1;i<=n;i++)
    {
        int dist=stone[i]-stone[i-1];
        stone[i]=stone[i-1]+dist%Mod;
    }
    l=(l-stone[n])%Mod+stone[n];
    for(int i=1;i<=n;i++)
        a[stone[i]]=1;
    memset(f,0x3f,sizeof(f));
    f[0]=0;
    for(int i=s;i<=l+t;i++)
        for(int j=s;j<=t;j++)
            if(i>=j)
                f[i]=min(f[i],f[i-j]+a[i]);
    int ans=INT_MAX;
    for(int i=l;i<=l+t;i++)
        ans=min(ans,f[i]);
    cout<<ans<<"\n";
    return 0;
}   

9191分,求条

2022/9/17 11:15
加载中...