【Vijos1412】多人背包(背包DP)
题意:求0/1背包的前K优解总和
k<=50 v<=5000 n<=200
思路:日常刷水
归并即可,不用排序
const oo=;
var dp:array[..,..,..]of longint;
w,c,a,b:array[..]of longint;
n,m,k1,i,j,k,x,y,ans,v:longint; begin
assign(input,'data.in'); reset(input);
assign(output,'Tyvj1412.out'); rewrite(output);
readln(k1,m,n);
for i:= to n do read(w[i],c[i]);
fillchar(dp[v],sizeof(dp[v]),$cf);
dp[,,]:=;
for i:= to n do
begin
v:=-v; dp[v]:=dp[-v];
dp[v,,]:=;
for j:=w[i] to m do
begin
for k:= to k1 do a[k]:=dp[-v,j,k];
for k:= to k1 do b[k]:=dp[-v,j-w[i],k]+c[i];
x:=; y:=;
for k:= to k1 do
begin
if (a[x]<)and(b[y]<) then begin dp[v,j,k]:=-oo; continue; end;
if a[x]>b[y] then begin dp[v,j,k]:=a[x]; inc(x); end
else begin dp[v,j,k]:=b[y]; inc(y); end;
end;
end;
end;
for i:= to k1 do
if dp[v,m,i]>= then ans:=ans+dp[v,m,i]
else break;
writeln(ans);
close(input);
close(output);
end.
【Vijos1412】多人背包(背包DP)的更多相关文章
- 背包&数位dp(8.7)
背包 0/1背包 设dp[i][j]为前i个物品选了j体积的物品的最大价值/方案数 dp[i][j]=max(dp[i-1][j-w[i]]+v[i],dp[i-1][j])(最大价值) dp[i][ ...
- BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP
BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...
- HDU5800 To My Girlfriend 背包计数dp
分析:首先定义状态dp[i][j][s1][s2]代表前i个物品中,选若干个物品,总价值为j 其中s1个物品时必选,s2物品必不选的方案数 那么转移的时候可以考虑,第i个物品是可选可可不选的 dp[i ...
- HDU 2955 Robberies 背包概率DP
A - Robberies Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submi ...
- [CF189A]Cut Ribbon(完全背包,DP)
题目链接:http://codeforces.com/problemset/problem/189/A 题意:给你长为n的绳子,每次只允许切a,b,c三种长度的段,问最多能切多少段.注意每一段都得是a ...
- hdu 1561 The more, The Better (依赖背包 树形dp)
题目: 链接:点击打开链接 题意: 非常明显的依赖背包. 思路: dp[i][j]表示以i为根结点时攻击j个城堡得到的最大值.(以i为根的子树选择j个点所能达到的最优值) dp[root][j] = ...
- 洛谷.1782.旅行商的背包(背包DP 单调队列)
题目链接(卡常背包) 朴素的多重背包是: \(f[i][j] = \max\{ f[i-1][j-k*v[i]]+k*w[i] \}\),复杂度 \(O(nV*\sum num_i)\) 可以发现求\ ...
- 各种背包的dp刷题板
[p1332][NYOJ skiing] 滑雪 (dp+搜索) [p1312] [vjios1448 路灯改建计划] 关灯问题 (背包预处理的分组背包) f[i][j]表示给把前i个灯分为j组可以获 ...
- 【题解】洛谷P1541 [NOIP2010TG] 乌龟棋(类似背包的DP)
题目来源:洛谷P1541 思路 类似背包的题 总之就是四种卡牌取的先后顺序不同导致的最终ans不同 所以我们用一个四维数组每一维分别表示第几种取了几张的最大分数 然后就是简单DP解决 代码 #incl ...
- 01背包入门 dp
题目引入: 有n个重量和价值分别为Wi,Vi的物品.从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中的价值总和的最大值. 分析: 首先,我们用最普通的方法,针对每个物品是否放入背包进行搜索. ...
随机推荐
- Kubenetes里pod和service绑定的实现方式
我之前的文章 如何在Kubernetes里创建一个Nginx service介绍了如何创建一个Kubernetes pod和service,使用的方法是命令kubectl run. 本文介绍另一种方式 ...
- ipsec配置strongswan.conf和ipsec.conf
配置strongswan.conf vi /usr/local/etc/strongswan.conf # strongswan.conf - strongSwan configuration fil ...
- C#入门(3)
C#入门(3) Delegates, Events, Lambda Expressions 最早的windows是使用c风格的函数指针来进行callback的,但是这样仅仅传递了一个内存中的地址,无法 ...
- 讲课笔记1——meta标签、表格标签
图片属性:src(source): 图片的来源(路径),可以放置本地图片,也可以放网上的图片的url地址 [相对路径: ./:当前目录 ../:跳出当前目录,到上一 ...
- 关于POST的请求的问题的汇总
1)404 解决方式:检查路径,路由问题 2)500 解决方式:1)首先检查代码 2)检查是否是参数未接收到 3)检查是否Content-Type类型导致的参数未收到 4)区分body-raw跟bod ...
- odoo10 fields.Selection 根据权限显示不同的selection内容
摘要:一般作为下拉选项,selection的选项内容是固定,针对一些特殊要求,根据权限组显示不同的selection内容的,可以参考odoo源码的. 前提:基于 odoo10.0 的源码 参考源码1: ...
- 介绍几款移动的WebAPP框架
如果是 Angular 那就选 Ionic (一对好 CP)如果是 Vue 那就选 Vux (基于 WeUI)如果是 jQuery 那就选 Framework7 (iOS 和 Android 双皮肤) ...
- mycat中间件安装与使用
前提: 安装JDK版本在7.0及其以上 1.下载: 下载地址在:http://dl.mycat.io/ 选择1.6-release版本下载 2.安装: 直接解压即可: tar -zxf Mycat-s ...
- Re:从零开始的Linux之路(杂谈)
决定认真从零开始写一个Linux的学习过程,像我这么偷懒的人能写文字记录已经很不容易了,希望不要半途而废吧(拖走) 用多了Linux其实发现,要是哪天Linux和Windows能结合下就好了,简单粗暴 ...
- vim之替换命令
格式:<range>s /<pat1>/<pat2>/gc <range>用来指定替换命令执行的范围: 百分号(%)表示所有行 点(.)表示当前行 美元 ...