比赛 noip2016普及练习1 评测结果 AAAAAAAAAA
题目名称 砝码称重 最终得分 100
用户昵称 Lethur 运行时间 0.004 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2016-11-03 20:49:18
显示代码纯文本
#include<iostream>
#include<cstdio> 
#include<cstring>
using namespace std;
int main()
{
	freopen("fmcz.in","r",stdin);
	freopen("fmcz.out","w",stdout);
 int a[7]={0,1,2,3,5,10,20},w[1001],num[7];
 int i,j,k,sum;
 while(cin>>num[1])
 {
  memset(w,0,sizeof(w));
  for(i=2;i<=6;i++)
   cin>>num[i];

  for(i=1;i<=6;i++)
   for(j=1;j<=num[i];j++)
   {
    w[a[i]]++;//该物品出现一次
    for(k=1000;k>=1;k--)//从后往前搜索,不会覆盖前一次的状态
    {
     if (k==a[i] && w[i]>1)//保证不会让一个质量为2或者3之类的物品无限自加
      w[k+a[i]]++;
     if (w[k]!=0 && k!=a[i])
      w[k+a[i]]++;
    }
   }
  sum=0;
  for(i=1;i<=1000;i++)
   if (w[i]!=0)
    sum++;
  cout<<sum<<endl;
 }
return 0;
}