http://acm.hdu.edu.cn/showproblem.php?pid=2639

在背包的基础上维护一个size<=K的最大值集合,为什么维护K个就好了呢,因为如果当前状态有多余K个最优解,前K个就足够转移到下一状态并占满前K了,所以K个之后的都没必要维护。

#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#include <map>
#include <queue>
#include <set>
#define LL long long
using namespace std;
const LL N=;
set<LL> dp[N];
LL w[N];
LL v[N];
LL n,V,k;
int main()
{
cin.sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
cin>>n>>V>>k;
for(int i=; i<=V; i++)dp[i].clear(),dp[i].insert();
for(int i=; i<n; i++)
cin>>v[i];
for(int i=; i<n; i++)
cin>>w[i];
for(int i=; i<n; i++)
{
for(int j=V; j-w[i]>=; j--)
{
int e=j-w[i];
for(set<LL>::iterator it=dp[e].begin();it!=dp[e].end();it++)
{
LL now=*it+v[i];
if(dp[j].size()==k)
{
if(now>*(dp[j].begin()))
dp[j].erase(*dp[j].begin()),dp[j].insert(now);
}
else dp[j].insert(now);
}
}
}
if(dp[V].size()<k)cout<<<<endl;
else
cout<<*dp[V].begin()<<endl;
}
return ;
}

最新文章

  1. 斗地主——扎金花——3DMark
  2. docker 报Error: docker-engine-selinux conflicts with docker-selinux-1.9.1-25.el7.centos.x86_64
  3. Swift版iOS游戏框架Sprite Kit基础教程下册
  4. Ajaxload动态加载动画生成工具的实现(ajaxload的本地移植)
  5. 【转】Maven实战(八)---模块划分
  6. 【转】我的Android笔记(十)—— ProgressDialog的简单应用,等待提示
  7. 【分享】LateX排版软件学习教程合集
  8. libpng处理png图片(一)
  9. 快速搭建一个Fabric 1.0的环境
  10. URL编码表 Base64编码表 HTTP消息含义
  11. Linux服务器同步Intetnet时间
  12. 并发系列3:Lock锁以及核心类AQS
  13. BonnMotion支持的几种移动模型
  14. 升级ChinaCock 10.3遇到的问题
  15. php伪静态与重定向
  16. WPF实现窗体中的悬浮按钮
  17. 使用 data.table 包操作数据
  18. command symbol &amp; mac &amp; emoji
  19. [置顶] linux常用命令大全
  20. web压力测试指标

热门文章

  1. luogu P4051 [JSOI2007]字符加密
  2. HDU 5929 Basic Data Structure(模拟 + 乱搞)题解
  3. Oracle 基础学习笔记
  4. Vue学习三:v-on:click命令及v-html命令学习
  5. Ural 1297 Palindrome(后缀数组+最长回文子串)
  6. java多线程同步机制
  7. JS基础---到底什么是闭包?它是如何形成的?
  8. Codeforces 746 G. New Roads
  9. 【BZOJ】4011: [HNOI2015]落忆枫音
  10. python3 items() 与 python2 中iteritems()的区别