bzoj4247: 挂饰(背包)】的更多相关文章

4247: 挂饰 题目:传送门 题解: 看完题目很明显的一道二维背包(一开始还推错了) 设f[i][j]表示前i个挂饰选完(可以有不选)之后还剩下j个挂钩的最大值(j最多贡献为n) 那么f[i][j]=max(f[i-1][j],f[i-1][max(j-a[i].w,0)+1]+a[i].x);(一开始忘了加1真的是沙茶) 然后就直接乱打一通...然后又错了 再想想,如果前面的好几个物品都没有挂钩...那我怎么转移,所以排序一下挂钩数目咯 代码: #include<cstdio> #incl…
4247: 挂饰 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1136  Solved: 454[Submit][Status][Discuss] Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个. 此外,每个挂件有一个安装时…
[BZOJ4247]挂饰 Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个. 此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示.如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数. JOI君想要最大化所有挂饰的喜悦值之和.注意不必要将所有的挂钩都挂上挂饰,而…
题目描述 JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个. 此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示.如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数. JOI君想要最大化所有挂饰的喜悦值之和.注意不必要将所有的挂钩都挂上挂饰,而且一个都不挂也是可以的. 输入 第一行一…
当最终挂饰集合确定了,一定是先挂挂钩多的在挂挂钩少的. 于是按挂钩从大到小排序,然后就是简单的01背包. #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namespace std; ,inf=1e9; int f[N][N]; int n,ans=-inf,v,c; struct P{ int v,c; }s[N]; bool operato…
Description     JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上.     JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个.     此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示.如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数.     JOI君想要最大化所有挂饰的喜悦值之和.注意不必要将所有的挂钩都挂上挂…
正解:背包dp 解题报告: 昂先放链接qwq 感觉还挺妙的,,,真的我觉得我直接做可能是想不到背包的,,,我大概想不出是个背包的QAQ 但是知道是背包之后觉得,哦,好像长得也确实挺背包的吼,而且其实是个比较经典的样子 所以为什么想不到呢,,,大概就 基础不牢地动山摇趴QAQ(不其实就是菜而已 然后大概随便港下就成qwq 首先是很明显是个01背包咯,然后就思考怎么设状态怎么转移 直接f[i][j]表示决定了前i个挂饰并且有j个挂钩时的vmax 就转移,没什么可讲的鸭,就 不选 f[i-1][j]…
4247: 挂饰 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=4247 Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个. 此外,每个挂件…
http://www.lydsy.com/JudgeOnline/problem.php?id=4247 先把挂饰按挂钩数量从大到小排序 dp[i][j]前i个挂饰,剩下j个挂钩的最大喜悦值 分挂和不挂转移 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define N 2011 ][N]; struct node…
首先将挂饰按照挂钩个数从大到小排序,然后DP 设f[i][j]处理完前i个挂饰,还有j个多余挂钩的最大喜悦值,则 f[0][1]=0 f[i][j]=max(f[i-1][max(j-a[i],0)+1]+b[i],f[i-1][j]) 时间复杂度$O(n^2)$. #include<cstdio> #include<algorithm> #define N 2010 using namespace std; int n,i,j,f[N][N],ans; struct P{int…