不会只有我一个人认为砝码左右盘都能放吧?
我一开始按砝码左右盘都能放来做,竟然只WA了#4
调了我好久......
下面请欣赏题目意思理解错误之后做出来的92分代码
#include<bits/stdc++.h>
#define N 1010
using namespace std;
bool a[2*N+1],b[2*N+1];
int sum,ans=0;
void dp(int x,int w)
{
for(int i=-sum;i<=sum;i++)
if(b[N+i])
for(int j=-x;j<=x;j++)
a[N+i+j*w]=1;
for(int i=-sum;i<=sum;i++)if(a[N+i])b[N+i]=1;
}
int main()
{
int a1,a2,a3,a5,a10,a20;
cin>>a1>>a2>>a3>>a5>>a10>>a20;
sum=a1+a2*2+a3*3+a5*5+a10*10+a20*20;
for(int i=sum;i<=sum;i++)a[N+i]=b[N+i]=0;
a[N]=b[N]=1;
dp(a1,1);
dp(a2,2);
dp(a3,3);
dp(a5,5);
dp(a10,10);
dp(a20,20);
for(int i=1;i<=sum;i++)if(a[N+i])ans++;
cout<<"Total="<<ans;
}