[NOIp2016]蚯蚓 (队列)
#\(\color{red}{\mathcal{Description}}\)
这道题是个\(zz\)题
#\(\color{red}{\mathcal{Solution}}\)
我们考虑如何得部分分,即十分\(zz\)的\(\Theta((m+n)log(m+n))\),窝萌发现这个复杂度似乎可以接受,但是会爆是真的,所以每当这个时候我们就需要思考问题内部的单调性。我们发现其实对于两条蚯蚓\(A\)和\(B\),设它们的长度为\(L_A\)和\(L_B\),假设他们满足\(L_A < L_B\),那么他们都砍去\(p \times 100%\)后坑定会有\(L_{Br} > L_{Ar}\),\(L_{Bl} > L_{Al}\)……那么从技术层面来讲,他们都会加\(mq-q\)……所以最终来讲,当前大于之后也一定大于……所以用三个队列维护一下即可\(qwq\)
#include <queue>
#include <cstdio>
#include <iostream>
#include <algorithm>
#define MAXN 1000100
using namespace std ;
queue<int> q, q1, q2 ; int cnt, L, R ;
int now, H1, H2, H3 ; double U, V, P ;
int mark = 0, A[MAXN], N, M, H, T, i, Ans[MAXN << 3] ;
inline int qr(){
int k = 0 ; char c = getchar() ;
while (c < '0' || c > '9') c = getchar() ;
while (c <= '9' && c >= '0') k = (k << 1) + (k << 3) + c - 48, c = getchar() ;
return k ;
}
inline bool cmp(int J, int L){return J > L ;}
int main(){
cin >> N >> M >> H >> U >> V >> T ;
for (i = 1; i <= N; ++ i) A[i] = qr() ;
sort(A + 1, A + N + 1, cmp) ;
for (i = 1; i <= N; i ++) q.push(A[i]) ;
for (i = 1; i <= M; ++ i){
H1 = q.empty() ? -0x7fffffff : q.front(),
H2 = q1.empty() ? -0x7fffffff : q1.front(),
H3 = q2.empty() ? -0x7fffffff : q2.front() ;
if (H1 >= H2 && H1 >= H3) q.pop(), now = H1 ;
else if (H2 >= H1 && H2 >= H3) q1.pop(), now = H2 ;
else if (H3 >= H1 && H3 >= H2) q2.pop(), now = H3 ;
now += mark, mark += H ;
L = (double)now * U / V , R = now - L, L -= mark, R -= mark ;
q1.push(L), q2.push(R) ;
if (i % T == 0) printf("%d ", now) ;
}
putchar('\n') ;
while(!q.empty() || !q2.empty() || !q1.empty()){
H1 = q.empty() ? -0x7fffffff : q.front(),
H2 = q1.empty() ? -0x7fffffff : q1.front(),
H3 = q2.empty() ? -0x7fffffff : q2.front(), ++ cnt ;
if (H1 >= H2 && H1 >= H3) q.pop(), now = H1 ;
else if (H2 >= H1 && H2 >= H3) q1.pop(), now = H2 ;
else if (H3 >= H1 && H3 >= H2) q2.pop(), now = H3 ;
if (cnt % T == 0) printf("%d ", now + mark) ;
}
return 0 ;
}
[NOIp2016]蚯蚓 (队列)的更多相关文章
- [Noip2016]蚯蚓 D2 T2 队列
[Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...
- 【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)
Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮 ...
- NC16430 [NOIP2016]蚯蚓
NC16430 [NOIP2016]蚯蚓 题目 题目描述 本题中,我们将用符号 \(\lfloor c \rfloor\) 表示对 c 向下取整,例如:\(\lfloor 3.0 \rfloor = ...
- [noip2016]蚯蚓<单调队列+模拟>
题目链接:https://vijos.org/p/2007 题目链接:https://www.luogu.org/problem/show?pid=2827#sub 说实话当两个网站给出AC后,我很感 ...
- [Noip2016]蚯蚓 (单调队列)
题干 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐蛐国 ...
- 2018.09.11 bzoj47214721: [Noip2016]蚯蚓(单调队列)
传送门 好题. 目测只会多带一个log2(n+m)" role="presentation" style="position: relative;"& ...
- 【bzoj4721】[Noip2016]蚯蚓
题目描述 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐 ...
- 【uoj264】 NOIP2016—蚯蚓
http://uoj.ac/problem/264 (题目链接) 题意 n条蚯蚓,时间为m.每单位时间要可以将最长的蚯蚓切成len/2和len-len/2两份,长度为0的蚯蚓不会消失,因为每单位时间所 ...
- BZOJ4721 [Noip2016]蚯蚓
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
随机推荐
- 让浏览器识别HTML5规范中的新标签
IE8浏览器中还没有添加对HTML5新标签的支持,所以在IE8中无法直接展现HTML5新标签中的内容.庆幸的是IE8/IE7/IE6支持通过document.createElement方法产生的标签, ...
- java获取当月天数,指定年月的天数,指定日期获取对应星期 .
package huolongluo.family.util; import java.text.SimpleDateFormat; import java.util.Calendar; import ...
- Pwn with File结构体(一)
前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 利用 FILE 结构体进行攻击,在现在的 ctf 比赛中也经常出现 ...
- ecloipse背景修改豆沙
Eclipse背景色的修改 Eclipse背景色的修改,修改为豆沙色 值是85 123 205 一.修改编辑区 ①这个比较简单一般都会不多说. 1.首先点击Window 然后选择Preferen ...
- 【Python】Java程序员学习Python(三)— 基础入门
一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...
- JQuery 简单表格验证
<form action="{% url 'register' %}" method="post"> 用户名:<input id=" ...
- 【转】虚拟机安装Ubuntu的上网设置(有线网络和无线网络)
虚拟机下ubuntu共享方式上网: 一. 有线网络 在有线网络的条件下,vmware的安装非常简单,上网方式几乎不用怎么设置(默认NAT模式) 如果默认情况下不能上网,则按以下步骤尝试: *** ...
- 手动搭建 redis 集群
转自http://meia.fun/article/1544161420745 手动搭建 redis 集群 redis 基本命令: 启动 redis 服务:redis-server xxx.conf ...
- leetCode题解之Number of Lines To Write String
1.题目描述 2.分析 使用一个map将字母和数字对应起来,方便后续使用. 3.代码 vector<int> numberOfLines(vector<int>& wi ...
- ASP.NET MVC 使用Remote特性实现远程属性验证
RemoteAttribute是asp.net mvc 的一个验证特性,它位于System.Web.Mvc命名空间 下面通过例子来说明 很多系统中都有会员这个功能,会员在前台注册时,用户名不能与现有的 ...