求助,为什么第一个测试点WA了
查看原帖
求助,为什么第一个测试点WA了
927977
zyc220207楼主2023/2/27 18:45
#include<bits/stdc++.h>
using namespace std;
int l,s,t,m,stone[101],f[100005],a[100005],ans;
void qwq(){
    for(int i=1;i<=m;i++)
        if(stone[i]%s==0)
            ans++;
    cout<<ans<<endl;
}
void awa(){
    for (int i=1;i<=m;i++){
        int dis=stone[i]-stone[i-1];
        stone[i]=stone[i-1]+dis%90;
    }
    l=(l-stone[m])%90+stone[m];
    for (int i=1;i<=m;i++) 
        a[stone[i]]=1;
}
void dp(){
    memset(f,0x7f,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]);
    ans=0x7f;
    for(int i=l;i<=l+t;i++)
        if(f[i]<ans)
            ans=f[i];
    cout<<ans<<endl;
}

int main(){
	ios::sync_with_stdio(false);
    memset(a,0,sizeof(a));
    cin>>l>>s>>t>>m;
    for (int i=1;i<=m;i++)
        cin>>stone[i];
    sort(stone+1,stone+m+1);
    if(s==t){
        qwq();
        return 0;
    }
    awa();
    dp();
    return 0;
}
2023/2/27 18:45
加载中...