题意:

思路:

我们发现,
对于任意两次切割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. windows系统下如何正确安装Cygwin(图文详解)

    我的操作系统信息是 1.在官网https://cygwin.com/install.html下载win64位安装包 选择包的下载存放目录,点击“下一步”   为了使我们安装的Cygwin能够编译程序, ...

  2. [SPOJ1811]Longest Common Substring 后缀自动机 最长公共子串

    题目链接:http://www.spoj.com/problems/LCS/ 题意如题目,求两个串的最大公共子串LCS. 首先对其中一个字符串A建立SAM,然后用另一个字符串B在上面跑. 用一个变量L ...

  3. win7电脑删除文件时一直提示文件正在被另一个程序占用

    这样的情况并非是第一次遇到了,以前总是会觉得这样的问题只是电脑的错乱,重启一下电脑就好了,但是并非每次都需要重启电脑的,其实简单的设置一下,这个问题就可以解决了.对了,咱们还是说说这到底是个什么问题吧 ...

  4. 用RecyclerView做一个小清新的Gallery效果

    一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...

  5. LoadRunner 11中Record无法自动生成脚本——解决办法

    [问题描述] 安装loadRunner 11, 使用IE为默认浏览器,打开一个页面进行脚本录制:录制完成后,无法生成脚本. [问题现象] 控制台输出如下: ****** Start Log Messa ...

  6. eclipse设置Tomcat超级详细

    刚接触Ajax,创建了jsp文件发现错误 必备软件:tomcat(从apache的官方网站上下载一个,我的是apache-tomcat-8.0.28) 需要下载tomcatPluginV321.zip ...

  7. ARC(Automatic Reference Counting )技术概述

    此文章由Tom翻译,首发于csdn的blog 转自:http://blog.csdn.net/nicktang/article/details/6792972 Automatic Reference ...

  8. Struts1 MVC框架的工作原理

    MVC英文及Model-View-Controller,分别是模型(Model),视图(View)和控制(Controller).MVC模式的目的是实现web系统的职能分工. View:即用户交互界面 ...

  9. H5 canvas 直线和三角形

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 几个net命令

    A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表.  比如:查看这个IP上的共享资源,就可以  C:\\>net view 192 ...