洛谷P4138 挂饰 背包
正解:背包dp
解题报告:
昂先放链接qwq
感觉还挺妙的,,,真的我觉得我直接做可能是想不到背包的,,,我大概想不出是个背包的QAQ
但是知道是背包之后觉得,哦,好像长得也确实挺背包的吼,而且其实是个比较经典的样子
所以为什么想不到呢,,,大概就 基础不牢地动山摇趴QAQ(不其实就是菜而已
然后大概随便港下就成qwq
首先是很明显是个01背包咯,然后就思考怎么设状态怎么转移
直接f[i][j]表示决定了前i个挂饰并且有j个挂钩时的vmax
就转移,没什么可讲的鸭,就
不选 f[i-1][j] 选f[i-1][max(j-a[i],0)+1]+b[i]
哦还是有俩要注意的点辣,分开港下qwq
第一个是关于那个max的
显然的是,如果我们有一个挂饰,挂钩特别特别多,超过了n,那它实际上有n就够了(其实应该是不满n的辣,先这么说qwq)所以其实从max转移来就是了
大概酱,其实还是有点儿无法理解的QAQ
如果实在无法理解我们可以酱
就是,我们可以不是从已知推出当前这个
而是,从当前这个推出能转移到的
能懂嘛qwq
这样就很好理解了鸭,转移都差不多嘛,但是关于超过n实际有n就够了这个理论的话就可以很简单的实现不需要再拐弯辣qwq
就直接 min(n,j-1+a[i].w) 这样就很好理解了嘛qwq
第二个是个需要注意的
就我们在转移前要先对这个挂饰排序,根据挂钩数排序
这个其实也能理解趴?因为这个其实是有点儿后效性的,就有点像之前做的那个什么外星人做菜的dp(那个我也想写题解qwq)
就是它是有后效性的,不知道能理解嘛?不能理解我明儿再来港qwq
所以就先排序,然后转移然后就结束了呢!
#include<bits/stdc++.h>
using namespace std;
][],n;
][];
];
inline bool cmp(str n1,str n2){return n1.w>n2.w;}
inline int read()
{
;;
'))ch=getchar();
;
)+(x<<)+(ch^'),ch=getchar();
return y?x:-x;
}
int main()
{
n=read();
;i<=n;i++)a[i].w=read(),a[i].v=read();
sort(a+,a++n,cmp);
;o[][]=,][]=;
;i<=n;i++)
;j<=n;j++)
{
][j] && j!=)
{
+a[i].w);
f[i][t]=max(f[i][t],f[i-][j]+a[i].v);
o[i][t]=;
}
f[i][j]=max(f[i][j],f[i-][j]);
][j]==)o[i][j]=;
}
;i<=n;i++)if(o[n][i])ans=max(ans,f[n][i]);
printf("%d",ans);
;
}
昂我放的是法二的代码因为感觉法二挺好理解的法一那个我还是没有很能理解QAQ
洛谷P4138 挂饰 背包的更多相关文章
- 洛谷 P1858 多人背包 DP
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 洛谷 P1858 多人背包 题目描述 求01背包前k优解的价值 ...
- [洛谷P1858] 多人背包
洛谷题目链接:多人背包 题目描述 求01背包前k优解的价值和 输入输出格式 输入格式: 第一行三个数K.V.N 接下来每行两个数,表示体积和价值 输出格式: 前k优解的价值和 输入输出样例 输入样例# ...
- 【BZOJ4247】挂饰 背包
[BZOJ4247]挂饰 Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他 ...
- 【bzoj4247】挂饰 背包dp
题目描述 JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上, ...
- bzoj4247: 挂饰(背包)
4247: 挂饰 题目:传送门 题解: 看完题目很明显的一道二维背包(一开始还推错了) 设f[i][j]表示前i个挂饰选完(可以有不选)之后还剩下j个挂钩的最大值(j最多贡献为n) 那么f[i][j] ...
- BZOJ 4247 挂饰 背包DP
4247: 挂饰 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id ...
- bzoj4247: 挂饰(背包dp)
4247: 挂饰 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1136 Solved: 454[Submit][Status][Discuss] ...
- 洛谷 P1858 多人背包
求01背包前k优解的价值和 输入输出格式 Input/output 输入格式:第一行三个数K.V.N(k<=50,v<=5000,n<=200)接下来每行两个数,表示体积和价值输出格 ...
- 【洛谷】【动态规划/背包】P1417 烹调方案
由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的食物准备填 ...
随机推荐
- Flash XSS 漏洞实例
www.bsdxm.com/zeroclipboard/ZeroClipboard.swf?id=\"))}catch(e){alert(/xss/);}//&width=500&a ...
- java基础思维导图大全
- windows“启动”对应的路径
C:\Users\huangye\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
- SharpGL学习笔记(三) 投影变换和视点变换
从本节开始,我们使用SharpGL带的VS2010扩展,来直接生成SharpGL工程. 如果你新建项目时,没有看到下面的SharpGL项目,那么请事先在SharpGL源代码中找到一个叫 ”SharpG ...
- 国产手机插入mac os 系统中无法被识别的解决方法
一些国产手机插入mac os 系统中无法被识别,在命令行输入 system_profiler SPUSBDataType在, 然后将魅蓝note的vendor id 添加至 ~/.android/ad ...
- LeetCode 43 Multiply Strings(字符串相乘)
题目链接: https://leetcode.com/problems/multiply-strings/?tab=Description 求解大数相乘问题 按照上图所示,进行嵌套循环计算 ...
- LeetCode 26 Remove Duplicates from Sorted Array (移除有序数组中重复数字)
题目链接: https://leetcode.com/problems/remove-duplicates-from-sorted-array/?tab=Description 从有序数组中移除重 ...
- Coding和Git的环境搭建
Github太慢了.打开网页慢,下载也只有几kb. 于是找了国内的Git,据说coding不错.就申请了个. 其实csdn也有...但是没人家的专业... 1 注册coding https://co ...
- python selenium操作表格式元素实例
很多时候,网页上的布局都是表格形式的,如出下面这样的 这种网页类型在自动化中比较头痛,需要很多判断,下面就举个例子,这里以深圳出入境网页为例,http://yysl.sz3e.com/wsyysq/s ...
- dhroid - Dhdb orm简化sqlite数据库操作
android数据库其实使用的不多,dhroid框架中的网络缓存使用了数据库我就写了也写了一个数据库操作工具 dhroid 数据库基本还是单表操作多,为了简单我只做了单表,那些级联,懒加载,什么的分两 ...