评测机出错?自测测试点对的判题是错的
查看原帖
评测机出错?自测测试点对的判题是错的
226167
呆呆的她啊楼主2024/3/26 20:35

wa#4

测试点 1 1 0 0 4 8

输出 83

答案也是83

records

#include<bits/stdc++.h>
#define int long long 
#define endl '\n'
using namespace std;
int n;
int dp[10005];
struct node{
	int shuzhi;
	int num;
}fm[10];
void solve()
{
      int sum=0;
	for(int i=1;i<=6;i++)
	{
		int x;
		cin>>x;
	//	cout<<sum<<endl;
		if(i==1)fm[i].shuzhi=1,fm[i].num=x,sum+=x;
		else if(i==2)fm[i].shuzhi=2,fm[i].num=x,sum+=2*x;
		else if(i==3)fm[i].shuzhi=3,fm[i].num=x,sum+=3*x;
		else if(i==4)fm[i].shuzhi=5,fm[i].num=x,sum+=5*x;
		else if(i==5)fm[i].shuzhi=10,fm[i].num=x,sum+=10*x;
		else if(i==6)fm[i].shuzhi=20,fm[i].num=x,sum+=20*x;
	}
//	cout<<sum<<endl;
	dp[0]=1;
//	if(sum==203){
//		cout<<"Total=83";
//		return ;
//	}
	for(int i=1;i<=6;i++)
	{
		for(int j=sum;j>=fm[i].shuzhi;j--)
		{
			for(int k=0;k<=fm[i].num;k++)
			{
				dp[j]|=dp[j-k*fm[i].shuzhi];	
			
			}
		}
	}
//	for(int i=1;i<=6;i++)
//	{
//		for(int j=1;j<=sum-fm[i].shuzhi;j++)
//		{
//			for(int k=0;k<=fm[i].num;k++)
//			{
//				dp[j]|=dp[j+k*fm[i].shuzhi];
//         //	cout<<j<<" "<<dp[j]<<endl;	
//			}
//		}
//	}
	int ans=0;
	for(int i=1;i<=sum;i++)
	{
		if(dp[i])ans++;
	}
//	Total=83
//	cout<<ans<<endl;
	cout<<"Total="<<ans;
}
signed main()
{
	ios::sync_with_stdio();
	cin.tie(0);
	cout.tie(0);
    solve();
	return 0;
}
2024/3/26 20:35
加载中...