2018.09.11 bzoj47214721: [Noip2016]蚯蚓(单调队列)
传送门
好题。
目测只会多带一个log2(n+m)" role="presentation" style="position: relative;">log2(n+m)log2(n+m)的解法,看了题解之后才会正解。
解析:
我们用三个队列来维护每次弹出的值。
第一个队列就是原数列。
第二个队列是每次砍掉后短的那一节组成的,第三个队列是长的那一节组成的。
显然这三个队列都具有单调性。
那么每次从三个队列中选一个最大的然后压入后两个队列里就行了。
实现细节见代码吧。
代码:
#include<bits/stdc++.h>
#define N 7000005
#define ll long long
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
inline void write(int x){
if(x>9)write(x/10);
putchar((x%10)^48);
}
inline bool cmp(const int&a,const int&b){return a>b;}
int q[3][N],n,m,Q,t,u,v,hd[3],tl[3],tmp,delta=0;
inline int calc(){
int pos,ret=-2147483647;
for(int i=0;i<3;++i)if(hd[i]<tl[i]&&q[i][hd[i]+1]>ret)pos=i,ret=q[i][hd[i]+1];
++hd[pos];
return ret;
}
int main(){
n=read(),m=read(),Q=read(),u=read(),v=read(),t=read();
for(int i=1;i<=n;++i)q[0][++tl[0]]=read();
sort(q[0]+1,q[0]+n+1,cmp);
for(int i=1;i<=m;++i){
int tmp=calc()+delta;
if(i%t==0)write(tmp),putchar(i+t>m?'\n':' ');
int shor=(long long)tmp*u/v,lon=tmp-shor;
delta+=Q,q[1][++tl[1]]=shor-delta,q[2][++tl[2]]=lon-delta;
}
if(t>m)puts("");
for(int i=1;i<=n+m;++i){
int tmp=calc()+delta;
if(i%t==0){write(tmp);if(i+t<=n+m)putchar(' ');}
}
return 0;
}
2018.09.11 bzoj47214721: [Noip2016]蚯蚓(单调队列)的更多相关文章
- [noip2016]蚯蚓<单调队列+模拟>
题目链接:https://vijos.org/p/2007 题目链接:https://www.luogu.org/problem/show?pid=2827#sub 说实话当两个网站给出AC后,我很感 ...
- 2018.09.06 烽火传递(单调队列优化dp)
描述 烽火台是重要的军事防御设施,一般建在交通要道或险要处.一旦有军情发生,则白天用浓烟,晚上有火光传递军情. 在某两个城市之间有 n 座烽火台,每个烽火台发出信号都有一定的代价.为了使情报准确传递, ...
- luogu 2827 蚯蚓 单调队列/优先队列
易知可利用优先队列选取最大值: 但是通过分析可知,先取出的蚯蚓分开后仍然要比后分的长,所以可直接利用单调队列找队头即可,分三个单调队列,分别找未切割,切割,切割2三种情况 #include<bi ...
- 洛谷P2827 蚯蚓(单调队列)
题意 初始时有$n$个蚯蚓,每个长度为$a[i]$ 有$m$个时间,每个时间点找出长度最大的蚯蚓,把它切成两段,分别为$a[i] * p$和$a[i] - a[i] * p$,除这两段外其他的长度都加 ...
- 2018.09.11 loj#10216.五指山(exgcd)
传送门 就是一个exgcd的板子. 但注意算距离差的时候是在一个环上面算. 还有,答案要开long long233... 注意这两点之后就是exgcd板子了. 代码: #include<bits ...
- 2018.09.11 poj2976Dropping tests(01分数规划)
传送门 01分数规划板子题啊. 就是简单变形移项就行了. 显然 ∑i=1na[i]∑i=1nb[i]≤k" role="presentation" style=" ...
- 2018.09.11 bzoj2208: [Jsoi2010]连通数(bitset+floyd)
传送门 听说正解是缩点+dfs? 直接bitset优化floyd传递闭包就行了.(尽管时间复杂度是假的O(n3/32)" role="presentation" styl ...
- 2018.09.11 poj1845Sumdiv(质因数分解+二分求数列和)
传送门 显然需要先求出ab" role="presentation" style="position: relative;">abab的所有质因 ...
- 2018.09.11 bzoj3629: [JLOI2014]聪明的燕姿(搜索)
传送门 一道神奇的搜索. 直接枚举每个质因数的次数,然后搜索就行了. 显然质因数k次数不超过logkn" role="presentation" style=" ...
随机推荐
- Eclipse在线安装STS插件
转自:https://blog.csdn.net/weixin_41987553/article/details/81091280 spring Boot是由Pivotal团队提供的全新框架,其设计目 ...
- oracle跟踪sql语句
oracle跟踪sql语句 select * from v$sql 查询客户端电脑名称的ID select terminal, SID,SERIAL# from v$session where ( ...
- ABAP-TXT文件上传
at selection-screen on value-request for pc_file. call function 'WS_FILENAME_GET' exporting ...
- spring cloud: eureka搭建
1. 添加pom 依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- & 运算
var f:uint; var e:uint; f=uint.MAX_VALUE; e=1<<31; trace(f,e,f&e); //output:4294967295 214 ...
- [转载]百分之百自动登录2345王牌技术员联盟源代码(delphi)
资源地址:http://download.csdn.net/detail/softlib/9670613
- delphi 中判断对象是否具备某一属性
Uses TypInfo; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); ...
- JQUERY框架的优点与面试题
1 你觉得 jquery 有哪些好处?jQuery 是轻量级的 javascript 框架强大的选择器出色的 DOM 操作的封装可靠的事件处理机制完善的 ajax 封装出色的浏览器的兼容性支持链式操作 ...
- spring中的BeanFactory和FactoryBean的区别与联系
首先,这俩都是个接口… 实现 BeanFactory 接口的类表明此类是一个工厂,作用就是配置.新建.管理 各种Bean. 而 实现 FactoryBean 的类表明此类也是一个Bean,类型为工厂B ...
- Java8 Stream语法详解 2
1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...