CF873E - Awards For Contestants
题意:对于 \(n\) 个人,每个人有一个分数,现在要把所有人分成四等,使得:
前三类都有人
前三类中,任意类的人数不大于其他类的人数的两倍
不能有 \(i\) 的分数比 \(j\) 高但是所属的等级不如 \(j\)
定义 \(d_i\) 是第 \(i\) 类的最低分和第 \(i+1\) 类的最高分的差,求最优的方案,按照 \(d_1\rightarrow d_2\rightarrow d_3\) 为第一、第二、第三关键字排序
首先转化题意,我们考虑枚举一等和二等的人数 \(i\) 和 \(j\),枚举的同时加入两倍的限制,得到当前的 \(d_1\) 和 \(d_2\)。
然后我们考虑找到一种方式,得到“剩余 \(k\) 个人,要求三等奖的人数不小于 \(\dfrac{i}{2}\) 和 \(\dfrac{j}{2}\),不大于 \(2i\) 和 \(2j\) 的最优的三等奖人数”。也就是 \(O(1)\) 找到一个最优的决策点使得当前点和前一个点的差最大,且当前点的下标在一个确定的范围 \([l,r]\) 内。
首先,这是一个 \(\text{rmq}\) 问题,考虑 \(\text{st}\) 表,把所有的 \({a(i)-a(i-1),i}\) 加入 \(\text{st}\) 表中,然后 \(O(n\log n)\sim O(1)\) \(\text{rmq}\)求出 \([l,r]\) 范围内使 \(a_i-a_{i-1}\) 最小的 \(i\),从而进行转移。这是比较暴力的做法。 \(\text{Best Code}\) \(\text{by irkstepanov}\)
但是我们可以有更优秀的做法。我们发现 \([l,r]\) 的上下界是单调的,也就是随着 \(j\) 的增长,下界和上界都在单调的增长。这就提示我们使用单调队列优化。
我们可以把所有在界中的决策点丢进单调队列,每次随着j的增长,单调队列头部 \(\text{pop}\) 尾部 \(\text{push}\),也可以 \(O(1)\) 的找到最优的决策点。\(\text{Best Code}\) \(\text{by LHiC}\)
CF873E - Awards For Contestants的更多相关文章
- Codeforces 873E Awards For Contestants ST表
原文链接https://www.cnblogs.com/zhouzhendong/p/9255885.html 题目传送门 - CF873E 题意 现在要给 $n(n\leq 3000)$ 个学生颁奖 ...
- Educational Codeforces Round 30
Educational Codeforces Round 30 A. Chores 把最大的换掉 view code #pragma GCC optimize("O3") #pr ...
- 关注经典:CSS Awards 获奖网站作品赏析《第一季》
每天都有很多新的网站推出,其中不乏一些设计极其优秀的作品.这个系列的文章,我为大家挑选了2012年赢得 CSS Awards 大奖的50个最佳网站.这些鼓舞人心的网站作品代表了网页设计的最高水平,相信 ...
- POJ 3140 Contestants Division 树形DP
Contestants Division Description In the new ACM-ICPC Regional Contest, a special monitoring and su ...
- Sicily 1299 Academy Awards (map + vector)集装箱
链接:http://soj.me/show_problem.php?pid=1299&cid= Description Selected from 3,850 teams from 1,329 ...
- Gym 100952F&&2015 HIAST Collegiate Programming Contest F. Contestants Ranking【BFS+STL乱搞(map+vector)+优先队列】
F. Contestants Ranking time limit per test:1 second memory limit per test:24 megabytes input:standar ...
- Awards and Certifications @EMC
1. Awards 1.1 Jun. 12, 2012, Accurev Migration 1.2 Oct. 16, 2012, Deliver Inyo RTM to Rockies 1.3 Ju ...
- Unity Awards 2018最佳资源
好的工具与资源,将帮助你的开发,达到事办功倍,今天我们将为大家介绍荣获Unity Awards 2018最佳资源的获奖作品. 最佳艺术工具:Aura - Volumetric Lighting Aur ...
- POJ 3140.Contestants Division 基础树形dp
Contestants Division Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10704 Accepted: ...
- Bossies 2015: The Best of Open Source Software Awards
InfoWorld editors and contributors pick the top open source software for data centers, clouds, devel ...
随机推荐
- shell编写循环检查脚本
背景:如下脚本实现当微服务重启后,检查微服务的启动端口正常,可通过轮询的方式来实现所需要用到配置文件config.properties信息如下: onlineService:8001 algorthS ...
- 单一接口优化过程全记录(主要涉及Redis)
接口优化过程记录 问题背景 某个接口耗时长(247ms),但里面逻辑不算复杂,只进行了简单的对象引用以及操作了多次Redis 步骤1:链路追踪,确定业务耗时点 接口里通过链路追踪以及日志查询发现主要是 ...
- 单一JVM同步锁实现
同步锁实现 一.背景 在并发场景下,需要单一线程或限定并发数操作某些逻辑,这时候就需要用到一个锁来保证线程安全. 二.思路 使用ConcurrentHashMap实现,但只支持同一个jvm下的线程(暂 ...
- STM32用寄存器实现电平翻转(一个按键控制LED灯的开关)
代码 GPIOx -> ODR ^= GPIO_Pin_x 如果加载了标准库的文件: GPIOx中的x可以为(A,B,C,D--) GPIO_Pin_x中的x可以为(1,2,3--) 如果没有加 ...
- 【转载】EXCEL VBA 自动筛选—AutoFilter方法
AutoFilter方法的语法及说明 下面是Range对象的AutoFilter方法的语法: Range对象.AutoFilter(Field,Criterial1,Operator,C ...
- Request.Form&Request.QueryString实现伪ajax的效果
1.问题描述 最近一直在搞公司老系统的需求开发,前端是asp,后端的vb.碰到了一个需求,是做一个"日志查询"功能,查询条件为:时间&操作人. 原本我的设计思路是异步查询, ...
- [深度学习] Contractive Autoencoder
转载于DeepLearning: Contractive Autoencoder - dupuleng - 博客园 一.雅克比矩阵 雅克比矩阵是一阶偏导,假设(x1,x2,....,xn)到(y ...
- [编程基础] Python字符串替换笔记
Python字符串替换笔记 Python字符串替换笔记主要展示了如何在Python中替换字符串.Python中有以下几种替换字符串的方法,本文主要介绍前三种. replace方法(常用) transl ...
- C语言常用知识总结
在 C 语言中,常量是一种固定值的标识符,它的值在程序执行期间不会改变. C 语言中有几种不同类型的常量: 字符常量:用单引号括起来的单个字符,例如 'A'.'b'.'1' 等. 字符串常量:用双引号 ...
- idea的简单介绍
上一篇博客中只是了解一下java文件是怎么编译的,但是一般来说大家都是使用编程软件来进行开发,我是使用IntelliJ IDEA进行开发的 官网下载IDEA(自行安装哈):地址:https://www ...