51: 校赛题:DG之实验室里的闲人
时间限制: 1 Sec 内存限制: 128 MB提交: 221 解决: 42
[ 提交][ 状态][ 讨论版]
题目描述
输入
输出
对于每组测试样例,输出一个整数,表示能称出的不同重量的数目。
样例输入
样例输出
提示
注意砝码只能放在一起
来源
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int t[]={1,2,3,5,10,20};
int main(void)
{
int cases;
cin >> cases;
while(cases--)
{
int num[6];
int ub = 0;
for(int i=0;i<6;i++)
{
cin>>num[i];
ub += t[i]*num[i];
}
bool flag[6][1001] = {false};
for(int i = 0;i < 6;i++)
for(int j = 1;j <= num[i];j++)
{
flag[i][j*t[i]] = true;
}
for(int i = 4;i >=0 ;i--)
{
for(int k = 1;k <= ub;k++)
{
if(flag[i+1][k])
{
for(int j = 0;j <= num[i];j++)
{
flag[i][k+j*t[i]] = true;
}
}
}
}
int res = 0;
for(int i = 1;i <= ub;i++)
if(flag[0][i])
res++;
cout<<res<<endl;
}
return 0;
}