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个。
此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示。如果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)

题意

题解:

背包问题,dp[i][j]表示在考虑第i个物品的时候,还剩下j个挂钩

注意,要按照挂钩多少排序,如果不排序的话,挂钩有可能会变成负数,然后又被加成正数

代码抄自:http://blog.csdn.net/creationaugust/article/details/48133509

代码:

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <bitset>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 4051
#define mod 10007
#define eps 1e-9
int Num;
//const int inf=0x7fffffff;   //нчоч╢С
const int inf=0x3f3f3f3f;
inline ll read()
{ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
//**************************************************************************************struct node
{int x,y;
};
bool cmp(node a,node b)
{return a.x>b.x;
}
node a[maxn];
ll dp[maxn>>1][maxn];
int main()
{int n=read();for(int i=0;i<=n;i++)dp[0][i]=dp[i][n+1]=-inf;for(int i=1;i<=n;i++)a[i].x=read(),a[i].y=read();sort(a+1,a+1+n,cmp);ll ans=0;dp[0][1]=0;for(int i=1;i<=n;i++){for(int j=0;j<=n;j++){dp[i][j]=max(dp[i-1][max(j-a[i].x,0)+1]+a[i].y,dp[i-1][j]);}}for(int i=0;i<=n;i++)ans = max(ans,dp[n][i]);printf("%d\n",ans);
}

BZOJ 4247 挂饰 背包DP相关推荐

  1. bzoj 4247: 挂饰 背包dp

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

  2. BZOJ.4247.挂饰(背包DP)

    题目链接 如果贪心,正的显然先选.然后处理负的,好像要用背包. 看这数据范围不如直接用背包.\(f[i][j]\)表示前\(i\)个物品,剩下\(j\)个钩子的最大价值. 因为没有钩子的放前面无法转移 ...

  3. bzoj 4247: 挂饰(DP)

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

  4. BZOJ 4247 挂饰

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

  5. bzoj4247: 挂饰(背包dp)

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

  6. bzoj 4247: 挂饰

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

  7. [BZOJ] 4247 挂饰

    Time Limit: 10 Sec Memory Limit: 256 MB Submit: 1390 Solved: 566 [Submit][Status][Discuss] Descripti ...

  8. 【BZOJ4247】挂饰 背包

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

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

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

最新文章

  1. 阿里云实现putty私钥登录全过程
  2. 01_ClickHouse概述,速度,分布式架构,列式存储,数据压缩,DBMS功能,有限支持DELETE、UPDATE功能,高吞吐写入功能,分布式计算,向量化执行引擎、架构、大数据处理架构
  3. 异常-根据错误类型捕获异常
  4. 西安外国语大学计算机基础,西安外国语大学教务处.PDF
  5. 一个入门级别的前端打包工具
  6. 数值计算方法matlab课后答案,《现代的数值计算方法matlab版》习题解答.pdf
  7. python下载网络图片_Python下载网络图片方法汇总与实现
  8. 中南民族大学计算机科学学院2011级2014年至2015年度课表,中南民族大学应用心理学专业2012-2013-2学期辅修-双学位课表(2010、2011级)...
  9. java 代理模式详解
  10. 【node进阶】深入浅出前后端身份验证(上)---session
  11. java基础热门侠客养成_侠客养成手册攻略大全 新手快速上手攻略[多图]
  12. “丧心病狂” kite
  13. str系列函数详解(包会)
  14. 吉林大学高级程序设计(红皮书)(最后几章)
  15. 易语言查找过滤相同重复文本源码
  16. 使用matplotlib在图片上画框框
  17. 20条非常实用的Python代码实例
  18. pytorch训练网络冻结某些层
  19. 可汗学院学习总结(一)
  20. 什么是Tomcat?Tomcat是什么意思?

热门文章

  1. beyond compare4过期解决方法_面试必备:缓存穿透、雪崩解决方案及缓存击穿的四种解决方案...
  2. python3编码命名规范_Python代码规范和命名规范
  3. 我的世界linux服务器怎么加种子,我的世界怎么获得服务器种子?服务器种子获得方法介绍...
  4. 应用回归分析何晓群课第五版_海外第三方应用市场分析丨出海学院十九期直播课...
  5. 【杂谈】超过12个,150页深度学习开源框架指导手册与GitHub项目,初学CV你值得拥有...
  6. 【信息抽取】如何使用卷积神经网络进行关系抽取
  7. 【年终总结】有三AI至今在人脸图像算法领域都分享了哪些内容?
  8. 【AI基础】OpenCV,PIL,Skimage你pick谁
  9. 全球及中国彩妆行业渠道模式调研与发展方向分析报告2022版
  10. JuJu团队12月28号工作汇报