description:

JOI君有N个装在手机上的挂饰,编号为1…N。 JOI君可以将其中的一些装在手机上。

JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩。每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上。直接挂在手机上的挂件最多有1个。

此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示。如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数。

JOI君想要最大化所有挂饰的喜悦值之和。注意不必要将所有的挂钩都挂上挂饰,而且一个都不挂也是可以的。

solution:

设 f [ i ] [ j ] 表 示 前 i 个 挂 钩 , 有 j 个 挂 饰 时 的 最 大 喜 悦 值 设f[i][j]表示前i个挂钩,有j个挂饰时的最大喜悦值 设f[i][j]表示前i个挂钩,有j个挂饰时的最大喜悦值

那 么 f [ i ] [ j ] = m a x ( f [ i − 1 ] [ j ] , f [ i − 1 ] [ m a x ( j − d [ i ] . a , 0 ) + 1 ] + d [ i ] . b ) ; 那么f[i][j]=max(f[i-1][j],f[i-1][max(j-d[i].a,0)+1]+d[i].b); 那么f[i][j]=max(f[i−1][j],f[i−1][max(j−d[i].a,0)+1]+d[i].b);

显然在普通背包的基础上考虑负值带来的影响就行了

还有就是注意要排序,因为如果先算钩子少的极有可能多次挂上没有意义

code:

#include<cstdio>
#include<algorithm>
#define minx -1000000000
using namespace std;
struct ben
{int a,b;
}d[2005];
int cmp(const ben &x,const ben &y)
{return x.a>y.a;
}
int f[2005][2005];
int main()
{int n;scanf("%d",&n);int m=0;for(int i=0;i<=n;i++){f[0][i]=f[i][n+1]=minx;}f[0][1]=0;for(int i=1;i<=n;i++){scanf("%d%d",&d[i].a,&d[i].b);}sort(d+1,d+n+1,cmp);for(int i=1;i<=n;i++){for(int j=0;j<=n;j++){f[i][j]=max(f[i-1][j],f[i-1][max(j-d[i].a,0)+1]+d[i].b);}}int ans=-2000000000;for(int i=0;i<=n;i++){ans=max(ans,f[n][i]);}printf("%d\n",ans);return 0;
}

洛谷P4138 [JOISC2014]挂饰 题解相关推荐

  1. P4138 [JOISC2014] 挂饰 题解

    洛谷题面&并不会更好的阅读体验 目录 0x00 思路 0x01 定义状态 0x02 状态转移方程 0x03 注意优化! code 0x00 思路 先看题. JOI君有 N N N 个装在手机上 ...

  2. P4138 [JOISC2014]挂饰

    P4138 [JOISC2014]挂饰 ◦          N个装在手机上的挂饰.挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个. ...

  3. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

  4. 洛谷P3336 [ZJOI2013]话旧 题解

    洛谷P3336 [ZJOI2013]话旧 题解 题目链接:P3336 [ZJOI2013]话旧 题意:小林跟着银河队选手去了一趟宇宙比赛,耳濡目染,变得学术起来.回来后,他发现世界大变样了.比丘兽究级 ...

  5. 洛谷P4683 [IOI2008] Type Printer 题解

    洛谷P4683 [IOI2008] Type Printer 题解 题目链接:P4683 [IOI2008] Type Printer 题意: 你需要利用一台可移动的打印机打印出NNN个单词.这种可移 ...

  6. 洛谷P3647 [APIO2014] 连珠线 题解

    洛谷P3647 [APIO2014] 连珠线 题解 题目链接:P3647 [APIO2014] 连珠线 题意: 在达芬奇时代,有一个流行的儿童游戏称为连珠线.当然,这个游戏是关于珠子和线的.线是红色或 ...

  7. 洛谷P4170 [CQOI2007]涂色 题解

    洛谷P4170 [CQOI2007]涂色 题解 题目链接:P4170 [CQOI2007]涂色 题意: 假设你有一条长度为 555 的木板,初始时没有涂过任何颜色.你希望把它的 555 个单位长度分别 ...

  8. 洛谷P1868 饥饿的奶牛 题解

    洛谷P1868 饥饿的奶牛 题解 题目链接:P1868 饥饿的奶牛 题意: 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有 NNN 个区间,每个区 ...

  9. 洛谷P1462 通往奥格瑞玛的道路 题解

    洛谷P1462 通往奥格瑞玛的道路 题解 题目链接:P1462 通往奥格瑞玛的道路 题意:在艾泽拉斯,有 nnn 个城市.编号为 1,2,3,-,n1,2,3,\ldots,n1,2,3,-,n . ...

最新文章

  1. XML 解析XML文档 XML约束
  2. python盘点订单_django解决订单并发问题【推荐】
  3. vsftpd+pam+mysql实现ftp构建
  4. 【Java源码分析】ArrayList源码分析
  5. 韩顺平老师 Mysql优化 笔记
  6. 网络流 (EK Dinic)
  7. php上传图片文件常用的几个方法
  8. WordPress: 使用 wp_insert_attachment 上传附件
  9. AudioClip 参数解析
  10. 安装LoadRunner时提示缺少vc2005_sp1_with_atl_fix_redist解决方案
  11. 如何开发Android安卓APP读写NFC Ntag
  12. VMware下安装Windows ME
  13. protel99实用基础入门教程
  14. 云知声(Unisound)蜂鸟系列AI离线语音识别芯片方案介绍
  15. 光纤存储服务器虚拟化,光纤存储DELL MD3600连接VMware ESX 65
  16. 飞思卡尔imx6q交叉编译工具有关问题
  17. 2022年下半年软考报名时间陆续公布(持续更新)
  18. 计算机毕业生毕业论文写作及选题方向
  19. Ubuntu 虚拟机的 wifi 连接图标上有个问号,网络用不了
  20. 巴拿赫空间的基本性质

热门文章

  1. 闭包的概念,作用,和优缺点
  2. Pytorch之经典神经网络CNN(三) —— AlexNet(CIFAR-10) (LRN)
  3. python声明变量
  4. java高德地图Api根据城市名称查该城市所有区域
  5. Java多线程总结(3)— Timer 和 TimerTask深入分析
  6. android AutoCompleteTextView 实现手机号格式化,附带清空历史的操作
  7. python人工智能应用锁_人工智能Python编程特训营——情报密码锁
  8. 2019年4月3日华为实习生笔试第2题-合法去重移位排序输出
  9. 服务器A上传文件到服务器B
  10. Win10不能直接拖文件进行打开解决 办法