题意:

思路:

我们发现,
对于任意两次切割i和j,i<j,
在进行完第j次切割后,第i次切割的u/v部分一定大于等于第j次切割的u/v部分,
第i次的1-u/v部分也一定大于等于第j次的1-u/v部分
证明很显然,
假设在第i次切割的时候,切割的蚯蚓长度为x,
第j次的时候为y+(i-j)q,
那么有x>=y,px+(i-j)q显然大于等于p(y+(i-j)q)
那么我们维护三个队列,
刚开始的时候把所有蚯蚓排序后推到第一个队列里,
然后每次取三个队头里最长的,
把他弹出来,再把切开的两半分别推入第二和第三个队列即可

From http://blog.csdn.net/neither_nor/article/details/53300255

线性复杂度还是被卡一个点 也是醉了

 var q:array[..,..]of longint;
t,w:array[..,..]of longint;
a:array[..]of longint;
n,m,q1,u,v,t1,i:longint;
now,s1,s2:longint; procedure swap(var x,y:longint);
var t:longint;
begin
t:=x; x:=y; y:=t;
end; procedure qsort(l,r:longint);
var i,j,mid:longint;
begin
i:=l; j:=r; mid:=a[(l+r)>>];
repeat
while mid<a[i] do inc(i);
while mid>a[j] do dec(j);
if i<=j then
begin
swap(a[i],a[j]);
inc(i); dec(j);
end;
until i>j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end; function h(x:longint):longint;
begin
if t[x,]>w[x,] then exit(-maxlongint);
exit(q[x,t[x,]]);
end; begin
assign(input,'bzoj4721.in'); reset(input);
assign(output,'bzoj4721.out'); rewrite(output);
readln(n,m,q1,u,v,t1);
for i:= to n do read(a[i]);
qsort(,n);
for i:= to n do q[,i]:=a[i];
t[,]:=; t[,]:=; t[,]:=;
w[,]:=n; w[,]:=; w[,]:=;
for i:= to m do
begin
if (h()<>-maxlongint)and(h()>=h())and(h()>=h()) then
begin
now:=h(); inc(t[,]);
end
else if (h()<>-maxlongint)and(h()>=h())and(h()>=h()) then
begin
now:=h(); inc(t[,]);
end
else
begin
now:=h(); inc(t[,]);
end;
now:=now+(i-)*q1;
if i mod t1= then
begin
write(now);
if i+t1<=m then write(' ');
end;
s1:=int64(now)*u div v;
s2:=int64(now)-s1;
inc(w[,]); q[,w[,]]:=s1-i*q1;
inc(w[,]); q[,w[,]]:=s2-i*q1;
end;
writeln;
for i:= to n+m do
begin
if (h()<>-maxlongint)and(h()>=h())and(h()>=h()) then
begin
now:=h(); inc(t[,]);
end
else if (h()<>-maxlongint)and(h()>=h())and(h()>=h()) then
begin
now:=h(); inc(t[,]);
end
else
begin
now:=h(); inc(t[,]);
end;
now:=now+m*q1;
if i mod t1= then
begin
write(now);
if i+t1<=n+m then write(' ');
end;
end; close(input);
close(output);
end.

【NOIP2016】蚯蚓(单调队列)的更多相关文章

  1. [noip2016]蚯蚓<单调队列+模拟>

    题目链接:https://vijos.org/p/2007 题目链接:https://www.luogu.org/problem/show?pid=2827#sub 说实话当两个网站给出AC后,我很感 ...

  2. luogu 2827 蚯蚓 单调队列/优先队列

    易知可利用优先队列选取最大值: 但是通过分析可知,先取出的蚯蚓分开后仍然要比后分的长,所以可直接利用单调队列找队头即可,分三个单调队列,分别找未切割,切割,切割2三种情况 #include<bi ...

  3. 洛谷P2827 蚯蚓(单调队列)

    题意 初始时有$n$个蚯蚓,每个长度为$a[i]$ 有$m$个时间,每个时间点找出长度最大的蚯蚓,把它切成两段,分别为$a[i] * p$和$a[i] - a[i] * p$,除这两段外其他的长度都加 ...

  4. 【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)

    Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮 ...

  5. [Noip2016]蚯蚓 (单调队列)

    题干 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐蛐国 ...

  6. [Noip2016]蚯蚓 D2 T2 队列

    [Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...

  7. NOIP2016-D2-T2 蚯蚓(单调队列)

    构建三个单调队列(用STL),分别储存未切的蚯蚓,切后的第一段,切后的第二段,即可简单证明其单调性. 证明:设$q$为单调队列$\because a_1 \geqslant a_2 \geqslant ...

  8. 【uoj264】 NOIP2016—蚯蚓

    http://uoj.ac/problem/264 (题目链接) 题意 n条蚯蚓,时间为m.每单位时间要可以将最长的蚯蚓切成len/2和len-len/2两份,长度为0的蚯蚓不会消失,因为每单位时间所 ...

  9. BZOJ4721 [Noip2016]蚯蚓

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  10. [NOIp2016] 蚯蚓

    类型:单调队列 传送门:>Here< 题意:有$N$只蚯蚓,每秒都会伸长$q$.每一次都会有人选出最长的一条切成两半,长度分别是$\left \lfloor px \right \rflo ...

随机推荐

  1. python vs java的rsa加密

    首先:java的加密解密模块需要更加精细的算法细节指定 java的加密方式 javax.crypto.Cipher,定义的获取方式 tatic Cipher getInstance(String tr ...

  2. CROSS APPLY AND CROSS APPLY

    随着业务千奇百怪,DBA数据库设计各有不同,一对多关系存JSON或字符串逗号分隔... 今天小编给大家分享一下针对这个问题的解决办法 问题一.存储过程接受参数格式为XXX,XXX 解决办法:将字符转成 ...

  3. C++学习_继承覆盖重载

    今天通过对实验二继承,重载,覆盖的学习,让我更深一步理解了这些概念的区别. 首先来明确一个概念,函数名即地址,也就是说函数名就是个指针. 编译阶段,编译器为每个函数的代码分配一个地址空间并编译函数代码 ...

  4. [转帖]4412开发板/4418开发板Android4.4.4实现ble功能

    本文转自迅为论坛:http://bbs.topeetboard.com ①.4418开发板实现ble功能方法: 在4418/android/device/nexell/drone2/device.mk ...

  5. log4net小记

    log4net添加: Install-Package Log4net log4net.config配置: <?xml version="1.0" encoding=" ...

  6. 解决android的键盘弹出时,html页面的高度被压缩

    如果元素的高度是用100%表示,那么,安卓的键盘弹出时,高度会发生变化,导致布局混乱,所以最好给高度设置像素高度 $("html,body").height(window.inne ...

  7. 扩展 IHttpModule

    上篇提到请求进入到System.Web后,创建完HttpApplication对象后会执行一堆的管道事件,然后可以通过HttpModule来对其进行扩展,那么这篇文章就来介绍下如何定义我们自己的mod ...

  8. windows开发错误

    2018/07/16: 1.问题: 代码: list <int> listN; error C2065:'list' : undeclared identifier 我已经#include ...

  9. IIS部署SSL证书后提示不可信的解决方案

    IIS部署SSL证书后提示不可信的解决方案   本帖最后由 wosign-support3 于 2015-7-17 17:18 编辑 第一步:打开mmc——点击文件——添加删除管理单元——证书——计算 ...

  10. pip install MySQL-python error "can't open config-win.h"

    http://blog.csdn.net/xxm524/article/details/48754139