[bzoj4247][挂饰] (动规+排序)
Description
Input
Output
Sample Input
-
-
Sample Output
HINT
Source
JOI 2013~2014 春季training合宿 竞技4 By PoPoQQQ
Solution
很明显,是动规题
为了满足枚举序要先对挂饰以挂钩数为第一关键字进行排序
设f[i][j]为前1~i个考虑后还剩j个挂钩的最大喜悦值,转移一下就行了
#include <stdio.h>
#include <memory.h>
#include <algorithm>
#define MaxN 2010
#define MaxBuf 1<<22
#define RG register
#define inline __inline__ __attribute__((always_inline))
#define Blue() {(S == T&&(T=(S=B)+fread(B,1,MaxBuf,stdin),S == T))?0:*S++}
#define dmin(a,b) ((a) < (b)?(a):(b))
#define dmax(a,b) ((a) > (b)?(a):(b)) char B[MaxBuf],*S=B,*T=B; template<class Type>inline void Rin(RG Type &x){
x=;RG int c=Blue();RG bool b=false;
for(; c<||c>; c=Blue())
if(c == )b=true;
for(; c>&&c<; c=Blue())
x=(x<<)+(x<<)+c-;
if(b)x=-x;
} int n,f[MaxN][MaxN],ans=-~0U<<; struct Juery{
int link_num,happiness_brought_by;
bool operator < (const Juery &other) const {
return link_num > other.link_num;
}
}a[MaxN]; int main(){
Rin(n);
for(RG int i=; i<=n; i++)
Rin(a[i].link_num),Rin(a[i].happiness_brought_by);
std::sort(a+,a++n); memset(f,-0x3f,sizeof f); f[][]=;
for(RG int i=; i<=n; i++)
for(RG int j=; j<=n; j++)
f[i][j]=dmax(f[i-][j],f[i-][dmax(,j-a[i].link_num)+]+a[i].happiness_brought_by);
for(RG int i=; i<=n; i++)
ans=dmax(ans,f[n][i]);
printf("%d\n",ans);
return ;
}
[bzoj4247][挂饰] (动规+排序)的更多相关文章
- BZOJ4247挂饰
Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩 ...
- [BZOJ4247]挂饰(DP)
当最终挂饰集合确定了,一定是先挂挂钩多的在挂挂钩少的. 于是按挂钩从大到小排序,然后就是简单的01背包. #include<cstdio> #include<algorithm> ...
- bzoj千题计划197:bzoj4247: 挂饰
http://www.lydsy.com/JudgeOnline/problem.php?id=4247 先把挂饰按挂钩数量从大到小排序 dp[i][j]前i个挂饰,剩下j个挂钩的最大喜悦值 分挂和不 ...
- BZOJ4247 : 挂饰
首先将挂饰按照挂钩个数从大到小排序,然后DP 设f[i][j]处理完前i个挂饰,还有j个多余挂钩的最大喜悦值,则 f[0][1]=0 f[i][j]=max(f[i-1][max(j-a[i],0)+ ...
- bzoj4247挂饰——压缩的动态规划
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4247 1.dp之前要先按挂钩个数从大到小排序,不然挂钩一度用成负的也可能是正确的,不仅脚标难 ...
- bzoj4247: 挂饰(背包dp)
4247: 挂饰 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1136 Solved: 454[Submit][Status][Discuss] ...
- bzoj4247: 挂饰(背包)
4247: 挂饰 题目:传送门 题解: 看完题目很明显的一道二维背包(一开始还推错了) 设f[i][j]表示前i个挂饰选完(可以有不选)之后还剩下j个挂钩的最大值(j最多贡献为n) 那么f[i][j] ...
- BZOJ4247 挂饰(动态规划)
相当于一个有负体积的背包.显然如果确定了选哪些,应该先把体积小的挂上去.于是按体积从小到大排序,就是一个裸的背包了. #include<iostream> #include<cstd ...
- bzoj4247挂饰——DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4247 就是01背包: 把挂钩数限制在n以内,因为不需要更多,而这会带来一些问题,就是有很多挂 ...
随机推荐
- 用msys1.0+mingw gcc4.7.1编译libodb(C++ ORM)
这里主要使用的是libodb 对sqlite数据库的支持. (1)下载编译sqlite3,当初编译go-sqlite3的时候下载过sqlite3,就直接拿过来用了. start msys.bat gc ...
- IDEA kafka producer数据输出缓慢 和 kafka consumer 报错的处理
问题1. IDEA 中Kafa_Producer程序数据输出缓慢 但不报错 问题2. Kafa_Consumer程序报错: 17/11/10 11:31:11 ERROR ReceiverTracke ...
- IIs+php 最精简的环境配置
一,安装IIS 1,打开控制面板->程序和功能->打开或关闭windows功能->Internet 信息服务 1>选 中web管理工具 2>选 中万维网服务 1>应 ...
- CodeForces 382C Arithmetic Progression (排序+分类讨论)
题意:给出一个长度为n的序列,表示有n张卡片,上面的数字,现在还有一张卡片,上面没有数字,问说可以写几种数字在这张卡片上面, 使得n+1张卡片上的数字可以排列成一个等差数列,有无限多种时输出-1. 析 ...
- 【Tair】淘宝分布式NOSQL框架:Tair
Tair是淘宝的一个开源项目,它是一个分布式的key/value结构数据的解决方案. 一.基本组成 作为一个分布式系统,Tair由一个中心控制节点(config server)和一系列的服务节点(da ...
- 1393 0和1相等串 鸽笼原理 || 化简dp公式
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393 正解一眼看出来的应该是鸽笼原理.记录每个位置的前缀和,就是dp[i ...
- HTML基础---表单
表单 <form id="" name="" method="post/get" action="负责处理的服务端" ...
- NPOI 导出Excel 2007, 2013问题
NPOI默认有两个命名空间HSSF为Excel 2003 版本,若导出2007 及以上后缀名打开excel 则会报错,NPOI也提供了一个07及以上的版本空间XSSF,具体操作列下: NPOI.XSS ...
- Android中出现Error:In (declare-styleable) FontFamilyFont, unable to find attribute android:font
Android中出现Error:In (declare-styleable) FontFamilyFont, unable to find attribute android:font 解决办法,今天 ...
- 【Android学习笔记】Mac下Android Studio开发环境搭建
本文由@ray 出品,转载请注明出处. 文章链接:http://www.cnblogs.com/wolfray/p/7829069.html 对于移动端这块,笔者之前一直都是进行iOS开发的,也从来 ...