K路归并 例题
来源:互联网 发布:淘宝女装海报设计 编辑:程序博客网 时间:2024/06/07 11:18
例题传送门
//有m种商品, 每一种商品有多个值, 然后要从每一种商品中选出一个值组成一个类型, 类型值为选出的商品值的sum. 问前k小个的值是多少.
//k路归并的典型例题, 把全部进行组合, 再排序输出前k个时不可能的, 因为组合达到了100^100次方个数, 但是这类题的关键在于k不大, 这里只有100, 所以每次进行两两组合时, 我们始终都只要前k个, 这样既能保证答案保存下来了, 而数的数量也不会很多. 这样的问题有很多也很经典.
AC Code
const int maxn = 1e2+5;int n,cas=1;int ans[maxn],a[maxn];void solve(){ int m,k; scanf("%d%d",&m,&k); priority_queue<int,vector<int>,greater<int> >q;//小根堆. int n; scanf("%d",&n); for(int i=1;i<=n;i++){ int u; scanf("%d",&u); q.push(u); } int idx = 0; for(int i=1;i<=min(k,n);i++){ ans[++idx] = q.top(); q.pop(); } for(int i=2;i<=m;i++){ scanf("%d",&n); for(int j=1;j<=n;j++){ scanf("%d",&a[j]); } sort(a+1,a+1+n); while(!q.empty()) q.pop(); for(int j=1;j<=idx;j++){ for(int tt=1;tt<=n;tt++){ q.push(ans[j]+a[tt]); } } idx = 0; for(int j=1;j<=k;j++){ ans[++idx] = q.top(); q.pop(); } } for(int i=1;i<=idx;i++){ printf("%d%c",ans[i],i==k?'\n':' '); }}
阅读全文
0 0
- K路归并 例题
- k路归并排序
- K路归并
- K路归并
- (p93)k路归并
- k-路归并的算法
- 最小堆k路归并
- 最大堆k路归并
- K路归并问题小结
- 例题 2.7归并排序
- 败者树 K-路归并排序
- 败者树 K-路归并排序
- 败者树 K-路归并排序
- 使用sort完成K路归并
- k路归并 - 败者树实现
- 利用堆实现k-路归并算法
- 9.4-外部排序+k路归并
- 简单K路归并C实现
- 清晰weblog日志,过滤不合法的记录
- git公钥私钥定义
- codevs 1017 乘积最大
- oj Runtime error常见原因+cpp函数命名规则
- SpringMVC Exception Handler
- K路归并 例题
- TensorFlow学习笔记:2、TensorFlow超简单入门程序
- 中科院量子创新研究院联合阿里云发布量子计算云平台
- 15算法课程 100. Same Tree
- ubuntu rails连接mongodb十步实例教程
- 转录组分析的正确姿势
- 用虚拟机模拟vpn的实现
- 访问修饰符权限
- Spring Boot with Spring MVC Application