codeforces 873E(枚举+rmq)
2024-08-29 19:49:16
题意
有n(n<=3000)个人参与acm比赛,每个人都有一个解题数,现在要决定拿金牌的人数cnt1,拿银牌的人数cnt2,拿铜牌的人数cnt3,各自对应一个解题数区间[d1,c1],[d2,c2],[d3,c3]
现在要求:
1、d1-c2尽可能大
2、在1满足的前提下,d2-c3尽可能大
3、在1,2满足的前提下,d3-num尽可能大(num表示铁牌第一名的解题数)
4、对于任意的x,y(1<=x,y<=3),cntx<=2*cnty
你需要给出一种每个人的奖牌分配来满足以上要求(1,2,3,-1分别表示金银铜铁)
分析
一个直接的想法就是暴力枚举金银铜的线,然后去得到最优的结果,这样是$O(n^3)$的,会超时
范围其实并不大,应该是可以$O(n^2)$解决的
我们可以只枚举金牌线和银牌线,快速计算铜牌线应该在哪
我们知道了cnt1和cnt2的值,于是就知道了cnt3的取值范围,就知道了铜牌线的区间[l,r]
我们需要在这[l,r]内找一个k,使得a[k]-a[k+1]的值最大
很容易想到求个差分数组,多次询问差分数组在[l,r]范围内的最大值,所以直接rmq
时间复杂度$O(n^2)$
最新文章
- Alpha阶段总结
- 浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore
- Redis数据库入门教程
- Raspberry pi(-) Mac下安装系统
- Python.Django视频教程(全13集)
- thinkphp验证码的实现
- nau8822 codec driver 录音时mic bias 无法自动打开问题
- The following module was built either with optimizations enabled or witherout debug information
- linux学习笔记之文件类型,及目录介绍
- Linux sftp 另外一台机器时,出现:receive message is too long
- [济南集训 2017] 求gcd之和
- 批处理基础知识-IF
- Google Chrome 书签导出并生成 MHTML 文件
- 扒一拔:Java 中的泛型(一)
- springmvc学习路线1-基本配置
- Android中的Sqlite中的onCreate方法和onUpgrade方法的执行时机
- linux下文件共享的几种常用方式
- python 爬虫资料
- 8 -- 深入使用Spring -- 3...1 Resource实现类ServletContextResource
- 采用Post方式提交数据实例