wa 90分求条
查看原帖
wa 90分求条
728778
hdkk楼主2024/4/7 16:18

死活调不出来了,求助dalao/kk

#include<bits/stdc++.h>
#define int long long
using namespace std;
int c[5],dp[200005],n,d[5],s;
signed main()
{
	cin>>c[1]>>c[2]>>c[3]>>c[4]>>n;
	dp[0]=1;
	for(int i=1;i<=4;i++)
	{
		for(int j=c[i];j<=2e5;j++)
			dp[j]+=dp[j-c[i]];
	}
	for(int i=1;i<=n;i++)
	{
		cin>>d[1]>>d[2]>>d[3]>>d[4]>>s;
		d[1]++;
		d[1]*=c[1];
		d[2]++;
		d[2]*=c[2];
		d[3]++;
		d[3]*=c[3];
		d[4]++;
		d[4]*=c[4];
		int ans=dp[s];
		if(s>=d[1])ans-=dp[s-d[1]];
		if(s>=d[2])ans-=dp[s-d[2]];
		if(s>=d[3])ans-=dp[s-d[3]];
		if(s>=d[4])ans-=dp[s-d[4]];
		if(s>=d[1]+d[2])ans+=dp[s-d[1]-d[2]];
		if(s>=d[1]+d[3])ans+=dp[s-d[1]-d[3]];
		if(s>=d[1]+d[4])ans+=dp[s-d[1]-d[4]];
		if(s>=d[2]+d[3])ans+=dp[s-d[2]-d[3]];
		if(s>=d[2]+d[4])ans+=dp[s-d[2]-d[4]];
		if(s>=d[3]+d[4])ans+=dp[s-d[3]-d[4]];
		if(s>=d[1]+d[2]+d[3])ans-=dp[s-d[1]-d[2]-d[3]];
		if(s>=d[1]+d[2]+d[4])ans-=dp[s-d[1]-d[2]-d[4]];
		if(s>=d[2]+d[3]+d[4])ans-=dp[s-d[2]-d[3]-d[4]];
		if(s>=d[1]+d[2]+d[3]+d[4])ans+=dp[s-d[1]-d[2]-d[3]-d[4]];
		cout<<ans<<endl;
	}
}
2024/4/7 16:18
加载中...