RE但是能过样例,求条,玄4关
查看原帖
RE但是能过样例,求条,玄4关
669171
Zachary_zhong楼主2024/9/20 08:57

代码:

#include<bits/stdc++.h>
#define ll long long
#define Inf -0x3f3f3f3f3f3f3f3f
using namespace std;
const ll M=1e6+9,N=1e3+9;
ll n,m,cnt,dp[M],nw[N],nnum[N],w[M];
inline void query()
{
    cin>>n>>m;if(n==0 && m==0) return;
    memset(dp,0,sizeof(dp));cnt=0;
    for(int i=1;i<=n;i++) cin>>nw[i];
    for(int i=1;i<=n;i++) cin>>nnum[i];
    for(int i=1;i<=n;i++)
    {
        ll tmp=0;
        for(int j=1;j*2<=nnum[i];j*=2)
            w[++cnt]=nw[i]*j,tmp+=nw[i]*j;
        if(tmp!=nnum[i]) w[++cnt]=nw[i]*(nnum[i]-tmp);
    }
    //for(int i=1;i<=cnt;i++)
   //     cout<<w[i]<<endl;
    dp[0]=1;
    for(int i=1;i<=cnt;i++)
        for(int j=m;j>=w[i];j--)
            if(dp[j-w[i]]!=-1) 
                dp[j]|=dp[j-w[i]];
    ll sum=0;
    for(int i=1;i<=m;i++)
        if(dp[i]) sum++;
    cout<<sum<<endl;
}
int main()
{
    while(1)
    {
        query();
        if(n==0 && m==0) break;
    }
    return 0;
}

全部RE(虽然总共就1个点)

2024/9/20 08:57
加载中...