Description

JOI君有N个装在手机上的挂饰,编号为1…N。 JOI君可以将其中的一些装在手机上。
JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩。每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上。直接挂在手机上的挂件最多有1个。
此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示。如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数。
JOI君想要最大化所有挂饰的喜悦值之和。注意不必要将所有的挂钩都挂上挂饰,而且一个都不挂也是可以的。
Input

第一行一个整数N,代表挂饰的个数。
接下来N行,第i行(1<=i<=N)有两个空格分隔的整数Ai和Bi,表示挂饰i有Ai个挂钩,安装后会获得Bi的喜悦值。
Output

输出一行一个整数,表示手机上连接的挂饰总和的最大值
Sample Input

5

0 4

2 -2

1 -1

0 1

0 3
Sample Output

5
HINT

将挂饰2直接挂在手机上,然后将挂饰1和挂饰5分别挂在挂饰2的两个挂钩上,可以获得最大喜悦值4-2+3=5。

1<=N<=2000

0<=Ai<=N(1<=i<=N)

-10^6<=Bi<=10^6(1<=i<=N)

Source

JOI 2013~2014 春季training合宿 竞技4 By PoPoQQQ

不难看出是背包.
那么把一开始读入体积为0的物品的体积当成1,不为0的当成-v+1来做背包.
要注意一些问题:

一开始直接暴力背包WA了…求教了Claris发现了这个问题…
以及初始化时候用负无穷,但是无穷量不要直接宏定义0x7fffffff然后前面加个负号否则会WA.
接下来就是傻逼背包了.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 4100
#define MAXINT 2100000000
using namespace std;
int f[MAXN>>1][MAXN];
int n,ans=-MAXINT;
int v,c;
struct pack
{int v,c;bool operator <(const pack& a)const{return v>a.v;}
}s[MAXN];
int main()
{scanf("%d",&n);for (int i=0;i<=n;i++)  f[0][i]=f[i][n+1]=-MAXINT;for (int i=1;i<=n;i++)  scanf("%d%d",&s[i].v,&s[i].c);f[0][1]=0;sort(s+1,s+n+1);for (int i=1;i<=n;i++)for (int j=0;j<=n;j++)f[i][j]=max(f[i-1][max(j-s[i].v,0)+1]+s[i].c,f[i-1][j]);for (int i=0;i<=n;i++)  ans=max(ans,f[n][i]);printf("%d\n",ans);
}

【BZOJ4247】挂饰相关推荐

  1. bzoj千题计划197:bzoj4247: 挂饰

    http://www.lydsy.com/JudgeOnline/problem.php?id=4247 先把挂饰按挂钩数量从大到小排序 dp[i][j]前i个挂饰,剩下j个挂钩的最大喜悦值 分挂和不 ...

  2. BZOJ4247挂饰

    Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直 ...

  3. bzoj4247 挂饰

    4247: 挂饰 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 1098  Solved: 440 [Submit][Status][Discuss ...

  4. bzoj4247: 挂饰(背包dp)

    4247: 挂饰 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 1136  Solved: 454 [Submit][Status][Discuss ...

  5. BZOJ4247: 挂饰

    Description JOI君有N个装在手机上的挂饰,编号为1-N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂 ...

  6. bzoj4247: 挂饰(01背包)

    状态:f[ i ][ j ]表示选到第 i 个物品时还剩 j 个勾 转移:f[i][j]=max(f[i-1][j-edge[i].gou+1>1?j-edge[i].gou+1:1]+edge ...

  7. 【BZOJ4247】挂饰 背包

    [BZOJ4247]挂饰 Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他 ...

  8. 【BZOJ4247】挂饰,又一个奇特的背包

    Description JOI君有N个装在手机上的挂饰,编号为1-N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂 ...

  9. BZOJ 4247 挂饰 背包DP

    4247: 挂饰 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id ...

最新文章

  1. VS2013自带的Browser Link功能引发浏览localhost网站时不停的轮询
  2. 远程链接oracle 12514,数据库建好后,本地连接正常,远程连接ORA-12514错误
  3. mac上投屏android_全平台Win/Mac全设备Android/iOS 免费无线投屏神器
  4. C#3.0新特性小结(2)
  5. 1.为什么要学习MATLAB
  6. 核心概念——节点/边/Combo——内置节点——Diamond
  7. 关于单链表,二叉树,图,查找和排序的软件编程
  8. Mybatis(12)事务原理和自动提交设置
  9. 动态开辟内存_C/C++工程师你理解程序的内存分区吗?
  10. 刷屏!马化腾:腾讯只是一家普通公司,随时可以被替换
  11. 从源码角度分析RocketMQ同步刷盘与异步刷盘的异同
  12. 三星SOC的显示控制器及framebuffer驱动s3c-fb.c中probe函数分析
  13. Python functools模块之cmp_to_key
  14. 一些文字游戏....
  15. ae合成设置快捷键_(精品)AE从小白到大神之路(一)-AE入门
  16. 为什么业务中很少用到设计模式
  17. 机械革命极光Pro 评测
  18. Unity3D教程:手游开发常用排序算法 -下
  19. 【MyBatis】mybatis分页插件
  20. js加密大全(防止客户端查看自己的js文件)

热门文章

  1. 腾讯的两难抉择背后,那是拼多多和京东的一场暗战
  2. c语言hidcur隐藏光标,鼠标失灵?这里有常见的几种解决办法
  3. java 成员变量(实例变量) 和类变量(静态变量)的区别
  4. Codeforces-1687 A: The Enchanted Forest 【贪心、简单数学】
  5. remote: username : Incorrect username or password (access token) fatal: Authentication failed for
  6. FreeNAS在FC中的简答搭建
  7. 开发一个JS FA应用
  8. Uos窗管开发IDE介绍.VSCode
  9. Netapp 磁盘、盘柜、控制器固件升级总结
  10. 广西民大计算机类分数线,2020广西民族大学研究生分数线汇总(含2016-2020历年复试)...