您的位置:首页 > 其它

POJ 1742

2015-06-10 16:44 204 查看
#include <iostream>
#define MAXN 105
using namespace std;

struct node
{
int a;
int c;
};

node _node[MAXN];
int sum[100001];
bool mark[100001];

int main()
{
//freopen("acm.acm","r",stdin);
int i;
int j;
int n;
int m;
while(cin>>n>>m)
{
if(n == 0 && m == 0)
{
break;
}
for(i = 0; i < n; ++ i)
{
cin>>_node[i].a;
}
for(i = 0; i < n; ++ i)
{
cin>>_node[i].c;
}
int ans = 0;
memset(mark,false,sizeof(mark));
mark[0] = true;
for(i = 0; i < n; ++ i)
{
memset(sum,0,sizeof(sum));
for(j = _node[i].a; j <= m; ++ j)
{
if(!mark[j] && mark[j-_node[i].a] && sum[j-_node[i].a] < _node[i].c)
{
mark[j] = true;
sum[j] =  sum[j-_node[i].a] + 1;
++ ans;
}
}
}
cout<<ans<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: