洛谷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还是会做饭的,于是拿出了储藏的食物准备填 ...
随机推荐
- jenkins配置RF构建结果显示
声明:转载请注明出处,谢谢 步骤1:安装robot framework plugin插件:系统管理-管理插件 步骤2:设置构建后操作:job-配置-构建后操作增加“Publish Robot Fram ...
- HTML 水平线
<hr /> 标签可以在 HTML 页面中创建水平线,通常用来分隔文章中的小节 <!DOCTYPE HTML> <html> <body> <p& ...
- drawCall_01
在屏幕上渲染物体,引擎需要发出一个绘制调用来访问图形API(iOS系统中为OpenGL ES).每个绘制调用需要进行大量的工作来访问图形API,从而导致了CPU方面显著的性能开销. Unity在运 ...
- DexArchiveBuilderException
出现这个问题大概是因为版本资源问题 比如把TextView 改为CompatTextView 解决方法一: 在项目的build.gradle文件中查看自己导入的依赖,看看是否有重复的,如果有的话删除 ...
- vc2015编译paho.mqtt.c-1.1.0
vc2015打开“\paho.mqtt.c-1.1.0\Windows Build\Paho C MQTT APIs.sln” 将文件“\paho.mqtt.c-1.1.0\src\VersionIn ...
- 《C++标准程序库》笔记之二
<C++标准程序库>笔记之二 本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. ------------------------------------- ...
- ts+antd报错error TS2605: JSX element type Xxx is not a constructor function for JSX elements
antd 3 以前的版本需要在 tsconfig.json 的 compilerOptions 中配置 "allowSyntheticDefaultImports": true
- 使用IDEA实现tomcat的热加载
1.打开tomcat的edit configuration,一定要选择war exploded 2.选择update classes and resources 3.配置基本就是这样,后面选择de ...
- 禁用Visual Studio 2013的Browser Link功能 -调试不断请求http://localhost:6154/c4ad1c693ebf428283832eaa827f9c6e/arterySignalR/poll?transport=longPolling...
关于禁用查到的解决: 作者:donny945 https://my.oschina.net/ind/blog/359003 今天浏览器调试代码的时候,一直出现以下的请求,导致需要看的请求都被淹没了,之 ...
- ios设备唯一标识获取策略
In iOS 7 and later, if you ask for the MAC address of an iOS device, the system returns the value 02 ...