1056: 背包2(填满型01背包)
来源:互联网 发布:seo黑帽很花钱吗 编辑:程序博客网 时间:2024/06/16 19:33
时间限制: 1 Sec 内存限制: 128 MB
提交: 638 解决: 353
[提交][状态][讨论版]
题目描述
【问题描述】
有n个数列,每个数列各自选若干个数,使得每个数列的和一样大,并且这个和要尽量大。
【输入文件】
第一行是一个整数N(N<=100),表示一共有n个数列。
以下N行每行是一个系列非负整数,表示每个数列的数字,用-1结束。
一个数列中的数字个数不超过100个,每个数也不超过100。
【输出文件】
一个整数,表示使得每个数列的和一样大,并且这个和要尽量大的值。如果找不到合适的方案,则输出0。
输入
输出
样例输入
2
2 1 -1
3 2 1 -1
样例输出
3
#include<cstdio>#include<cstring>#include<iostream> #include<cmath>using namespace std;int f[111000],a[110];int t[111000];int main(){ int n,l,sum; cin>>n; for(int i=1;i<=n;i++) { int x,len=0; while(scanf("%d",&x)!=EOF) { if(x==-1) break; a[++len]=x; } sum=0; memset(f,0,sizeof(f));f[0]=1; for(int j=1;j<=len;j++) { for(int k=sum;k>=0;k--) { if(f[k]==1) { f[k+a[j]]=1; sum=max(sum,k+a[j]); } } } for(int i=0;i<=sum;i++) if(f[i]==1) t[i]++; } for(int i=sum;i>=0;i--) if(t[i]==n) { printf("%d",i); return 0; } return 0; }
阅读全文
0 0
- 1056: 背包2(填满型01背包)
- 1055: 背包1(填满型01背包)
- 1055: 背包1(填满型01背包 &降维)
- 1061: 背包7(匹配性填满型 完全 背包)
- 【NOIP2001普及组T4】1055·背包1(填满型01背包)
- 1060: 背包6(含价值的填满型 完全 背包)
- caioj·1060: 背包6(含价值的填满型 完全 背包)
- 背包问题(01背包,完全背包,多重背包)
- 背包问题(01背包,完全背包,多重背包)
- 背包(01背包、完全背包、多重背包)问题总结
- 背包模板(01背包,完全背包,多重背包)
- 背包问题(01背包,完全背包,多重背包)
- 背包问题(01背包 + 完全背包 + 多重背包)
- 背包问题(01背包,完全背包,多重背包)
- 背包问题模板(01背包,完全背包,多重背包)
- 经典背包问题----(01背包、完全背包、多重背包)
- 区分各种背包【01背包、完全背包、多重背包、2维背包】
- NYOJ860:又见01背包(01背包入门2)
- C#Monitor模似 Barrier
- win7/win8右键菜单添加程序
- echarts入门小案例
- AngularJS2 学习笔记——创建service
- 【Linux】几种进程间通信方式的清晰比较
- 1056: 背包2(填满型01背包)
- 欢迎使用CSDN-markdown编辑器
- SVN包含非法文件系统格式选项/包含非法文件系统格式选项
- C语言运算符优先级
- for循环实现1-10的相加
- Codeforces Round #441
- Printf函数基本概念
- 让你的Linux飞起来的5个妙招
- NOIP模拟 10.17 单调队列 + 树形Dp + 区间Dp