正解:背包

解题报告:

,,,本来自以为,我dp学得还挺好的

然后今天一考发现都不会啊QAQ

连最基础的知识点都不清楚啊QAQ

所以就来写个题解嘛!

先放下板子题

其实我jio得,这题只要大概了解方法就不是很难鸭,,,毕竟是基础算法,还是比较好理解的QAQ

大概说下QwQ

就是开f[i],它是个一个长度为k的数组,表示的是重量为i时的前k优解(物品那一维显然可以滚掉不说

然后转移也很显然,就是f[i+val[j]]=max(f[i+val[j]],f[i])

注意一下就是这里的取max是指从这k*2个数中选前k大的,彼此之间没有捆绑关系的哈

还有一个是显然我们可以做到让f[i]表示的数组单调递减

这样我们取max的时候就可以归并排序做掉(事实上只是归并排序的思想QwQ

然后hl还分享了个用堆的方法

然而显然不够优秀而且很麻烦不写了,知道有这么个玩意儿可以直接用堆维护就好

(算了大概说一句,,,其实差不多,只是他的f[i]表示的就是个堆了,没了,,,合并起来还麻烦些QAQ

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i)
#define my(i,x,y) for(register ll i=x;i>=y;--i) const ll N=,V=+,K=;
ll n,v,k,hv[N],val[N],ans;
struct node{ll vl[K],sz;node(){sz=;memset(vl,,sizeof(vl));}}f[V];
//这里想注释下,,,这个是学到的一个小技巧,就是memset128相当于初始化负无穷w inline ll read()
{
register char ch=getchar();register ll x=;register bool y=;
while(ch!='-' && (ch>'' || ch<''))ch=getchar();
if(ch=='-')ch=getchar(),y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
return y?x:-x;
}
inline node mx(node x,node y,ll dat)
{
node z;ll szz=min(x.sz+y.sz,k);ll l1=,l2=,l3=;z.sz=szz;
while(l1<=x.sz && l2<=y.sz && l3<=szz)
{
if(x.vl[l1]>=y.vl[l2]+dat)z.vl[l3++]=x.vl[l1++];
else z.vl[l3++]=y.vl[l2++]+dat;
}
while(l1<=x.sz && l3<=szz)z.vl[l3++]=x.vl[l1++];
while(l2<=y.sz && l3<=szz)z.vl[l3++]=y.vl[l2++]+dat;
return z;
} int main()
{
k=read();v=read();n=read();rp(i,,n)hv[i]=read(),val[i]=read();f[].vl[]=;
rp(i,,n)my(j,v,hv[i])f[j]=mx(f[j],f[j-hv[i]],val[i]);
rp(i,,k)ans+=f[v].vl[i];
printf("%lld\n",ans);
return ;
}

这儿是code!

洛谷P1858 多人背包 多人背包板子题/多人背包学习笔记的更多相关文章

  1. 洛谷 P1858 多人背包 DP

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 洛谷 P1858 多人背包 题目描述 求01背包前k优解的价值 ...

  2. 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题

    洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...

  3. [洛谷P1858] 多人背包

    洛谷题目链接:多人背包 题目描述 求01背包前k优解的价值和 输入输出格式 输入格式: 第一行三个数K.V.N 接下来每行两个数,表示体积和价值 输出格式: 前k优解的价值和 输入输出样例 输入样例# ...

  4. 洛谷 P1858 多人背包 解题报告

    P1858 多人背包 题目描述 求01背包前k优解的价值和 输入输出格式 输入格式: 第一行三个数\(K\).\(V\).\(N\) 接下来每行两个数,表示体积和价值 输出格式: 前k优解的价值和 说 ...

  5. 洛谷 P1858 多人背包

    求01背包前k优解的价值和 输入输出格式 Input/output 输入格式:第一行三个数K.V.N(k<=50,v<=5000,n<=200)接下来每行两个数,表示体积和价值输出格 ...

  6. 【洛谷P1858】多人背包

    题目大意:求解 0-1 背包前 K 优解的和. 题解:首先,可知对于状态 \(dp[j]\) 来说,能够转移到该状态的只有 \(dp[j],dp[j-w[i]]\).对于 K 优解来说,只需对状态额外 ...

  7. 解题:洛谷 p1858 多人背包

    题面 设$dp[i][j]$表示容量为$i$时的第$j$优解,因为是优解,肯定$dp[i][j]$是随着$j$增大不断递减的,这样的话对于一个新加进来的物品,它只可能从两个容量的转移的前$k$优解中转 ...

  8. 洛谷P5289 [十二省联考2019]皮配(01背包)

    啊啊啊边界判错了搞死我了QAQ 这题是一个想起来很休闲写起来很恶心的背包 对于\(k=0\)的情况,可以发现选阵营和选派系是独立的,对选城市选阵营和学校选派系分别跑一遍01背包就行了 对于\(k> ...

  9. 洛谷 P1064 金明的预算方案 (有依赖的0/1背包)

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”. ...

随机推荐

  1. Ubuntu 14.04 安装R 环境

    Introduction R is a popular open source programming language that specializes in statistical computi ...

  2. MVC后台与前台交互的问题。。。

    后台: viewbag.sb/*这是一个sb路径*/=@"\gao\shou"; 前台js: var sb='@viewbag.sb'; alert(sb); 结果就是gaocon ...

  3. 与其他Javascript类库冲突解决方案

    $(document).ready(function() { var $jq = jQuery.noConflict(); $jq('#id').show(); });

  4. C++学习地址

    1.http://blog.csdn.net/netanimals 2.http://blog.csdn.net/g710710/article/category/886003 3.http://bl ...

  5. mysql中参数--init-file的作用是什么呢?

    需求描述: 今天在修改测试环境mysql数据库中root用户密码的时候,用到了--init-file参数, 所以,就在这里说下该参数的作用. 概念解释: 参数:--init-file=file_nam ...

  6. c++ 类数据成员的定义、声明

    C++为类中提供类成员的初始化列表类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算  1.类里面的任何成员变量在定义时是不 ...

  7. linux zip压缩和解压的各种操控

    1.把/home文件夹以下的mydata文件夹压缩为mydata.zip zip -r mydata.zip mydata #压缩mydata文件夹 2.把/home文件夹以下的mydata.zip解 ...

  8. Java精选笔记_国际化

    国际化 什么是国际化 指软件在开发时就应该具备支持多种语言和地区的功能,当应对不同国家和地区的用户访问,针对不同国家和地区的用户,提供相应的.符合来访者阅读习惯的页面和数据. 由于国际化interna ...

  9. remove()

    remove() 用于从列表中删除指定的元素 In [35]: l = ['a', 'b', 'c'] In [36]: l.remove('b') In [37]: l Out[37]: ['a', ...

  10. Sphinx以及coreseek的安装及使用 .No1

    检索结构php -> sphinx -> mysql非结构化数据又叫全文数据,非固定长度字段例如文章标题搜索这类适用sphinx 全文数据搜索:顺序扫描 : 如like查找索引扫描 : 把 ...