[JOISC2014]ストラップ

题目大意:

有\(n(n\le2000)\)个挂饰,每个挂饰有一个喜悦值\(b_i(|b_i|\le10^6)\),下面有\(b_i(b_i\le10^6)\)个挂钩,可以用来挂别的挂饰。一开始只有一个挂钩,问喜悦值总和的最大值。

思路:

\(f[i][j]\)表示考虑前\(i\)个挂饰,还多\(j\)个钩子时,喜悦值总和的最大值。

考虑同样的一堆挂件,先挂\(a_i\)大的可以尽可能避免钩子不够用的情况。因此需要先将所有挂件按\(a_i\)从大到小排序。

时间复杂度\(\mathcal O(n^2)\)。

源代码:

#include<cstdio>
#include<cctype>
#include<climits>
#include<algorithm>
#include<functional>
inline int getint() {register char ch;register bool neg=false;while(!isdigit(ch=getchar())) neg|=ch=='-';register int x=ch^'0';while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');return neg?-x:x;
}
const int N=2001;
struct Node {int a,b;bool operator > (const Node &rhs) const {return a>rhs.a;}
};
Node p[N];
int f[N][N];
inline void upd(int &a,const int &b) {a=std::max(a,b);
}
int main() {const int n=getint();for(register int i=1;i<=n;i++) {p[i].a=getint();p[i].b=getint();}std::sort(&p[1],&p[n]+1,std::greater<Node>());std::fill(&f[0][0],&f[0][n]+1,INT_MIN);f[0][1]=0;for(register int i=1;i<=n;i++) {std::copy(&f[i-1][0],&f[i-1][n]+1,f[i]);for(register int j=1;j<=n;j++) {if(f[i-1][j]==INT_MIN) continue;upd(f[i][std::min(j-1+p[i].a,n)],f[i-1][j]+p[i].b);}}int ans=0;for(register int i=0;i<=n;i++) {upd(ans,f[n][i]);}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/skylee03/p/10115619.html

[JOISC2014]ストラップ相关推荐

  1. [JOISC2014]バス通学

    [JOISC2014]バス通学 题目大意: 有\(n(n\le10^5)\)个点和\(m(m\le3\times10^5)\)条交通线路.第\(i\)条交通线路可以让你在时间\(x_i\)从\(a_i ...

  2. [JOISC2014]挂饰

    [JOISC2014]挂饰 难度:提高+/省选- 分类:动态规划,01背包,贪心,剪枝 分析:初看这道动态规划题,可以看出是一道01背包题,但这道题不同于其他01背包的地方在于挂钩的问题,其挂钩数量如 ...

  3. P4138 [JOISC2014]挂饰

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

  4. BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈

    传送门 题意:给出平面上$N$个点,求满足以下两个条件的矩形:①左下角与右上角各有一个点:②矩形内部没有点.$N \leq 2 \times 10^5$,所有数字大于等于$0$,保证坐标两两不同 最开 ...

  5. 洛谷P4138 [JOISC2014]挂饰 题解

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

  6. P4138 [JOISC2014] 挂饰 题解

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

最新文章

  1. python读取大文件-python快速读取一个大文件内容(瞎猜)
  2. ETL的四个基本过程.
  3. solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询
  4. elementui el-table根据分页显示表格序号
  5. C++ vector 使用详解
  6. MySQL从原理到实践,一篇从头到尾讲清楚
  7. activity6快速部署流程文件
  8. 宝塔 php redis not found in_PHP之PSR-4规范:自动加载
  9. LotusScript (转)
  10. 数据地图搜索功能模块项目总结【springBoot+Elasticsearch】
  11. C语言:二进制转换十进制
  12. 基于STM32根据DL/T 645-2007通讯协议利用RS485进行抄表并将电压等数据利用HC-05蓝牙实时传输至上位机显示
  13. 量子前沿英雄谱|既研究陶艺,也研究光量子:Hideo Mabuchi
  14. 如何在网页中设置一个定时器计算时间?
  15. Spring BlazeDS Integration 的工作原理
  16. 移动后端即服务(BaaS)市场现状及未来发展趋势
  17. print函数的学习与总结
  18. Python学习记录 使用tensorflow 2.8 完成猫狗识别 使用keras构建CNN神经网络
  19. 我眼中的博客MVB与投票 1
  20. 消能减震神器之“黏滞阻尼器”的力学原理与应用

热门文章

  1. [转载]Linux从程序到进程
  2. Python笔记总结week3
  3. android Fragment 学习资料推荐
  4. HTTP/TCP/IP协议
  5. 瑞星播报:3月8日需警惕“灰鸽子变种AWM”病毒
  6. 断点续传了解一下啊?
  7. 微信访问H5,闪退问题
  8. [物理学与PDEs]第2章习题13 将 $p$ - 方程组化为守恒律形式的一阶拟线性对称双曲组...
  9. 总结自己的Git常用命令
  10. 又一个防火墙的问题——content filtering