疑似UB
  • 板块灌水区
  • 楼主yoyiETO
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/8/26 10:31
  • 上次更新2023/11/6 19:18:30
查看原帖
疑似UB
277173
yoyiETO楼主2020/8/26 10:31

一道多重背包求方案数的题,加了#prama GCC optmize(2)然后TLE 60pts->WA 80pts

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
const int N = 5e6;
int v,n,a[N],b[N],sum;
long long dp[N]={1};
int main()
{
	while(~scanf("%d",&v)&&v!=-1)
	{
		dp[0]=1,sum=0;
		for(int i=1;i<=v;i++)
		{
			scanf("%d%d",&a[i],&b[i]);
			sum+=a[i]*b[i];
		}
		for(int i=1;i<=v;i++)
		for(int j=a[i];j<=sum;j++)
		{
		    for(int k=1;k<=b[i];k++) 
		    	dp[j]+=dp[j-k*a[i]];
		}
		for(int i=(sum%2?sum/2+1:sum/2);i<=sum;i++)
			if(dp[i]){
				printf("%d %d\n",i,sum-i);
				break;
			}
	}
	return 0;
}
2020/8/26 10:31
加载中...