传送门

解题思路

第一眼以为是一个二叉堆,直接上优先队列60分。。。后来听ztz11说有单调性,新加入的蚯蚓一定比原先在的蚯蚓长度长,开三个队列,分别放原先的长度,切掉后大的那一半,切掉后小的那一半。假设原先的第一个数为x1,第二个数为x2,x1>x2,那么取出x1后大的那一半记做x1*p(假设p>1/2) ,第二个数此时加q,第二次再将第二个数拿出来,大的那一半就是(x2+q)*p=x2*p+q*p,而原先第一个数大的那一半变成了x1*p+q,因为x1>x2,p<0,所以符合单调性。所以只需要每次取出最大的切,然后分成两半分别放入第二个与第三个队列。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue> typedef long long LL;
using namespace std;
const int MAXN = 1e5+5;
const LL inf = 1e18+5;
const int MAXM = 7e6+5; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x*f;
} int n,m,q,u,v,t;
LL ans[MAXM],a[MAXN];
queue<LL> Q[4]; inline bool cmp(int x,int y){
return x>y;
} int main(){
// freopen("rand.txt","r",stdin);
// freopen("A.txt","w",stdout);
n=rd();m=rd();q=rd();u=rd();v=rd();t=rd();
for(register int i=1;i<=n;i++) a[i]=rd();
sort(a+1,a+1+n,cmp);
for(register int i=1;i<=n;i++) Q[1].push(a[i]);
for(register int i=1;i<=m;i++){
LL x=-inf,y=-inf,z=-inf;
if(Q[1].size()) x=Q[1].front();
if(Q[2].size()) y=Q[2].front();
if(Q[3].size()) z=Q[3].front();
LL mx=x;int r=1;
if(y>mx) mx=y,r=2;
if(z>mx) mx=z,r=3;Q[r].pop();
mx+=(LL)(i-1)*q;ans[i]=mx;
LL now=mx;mx=mx*u/v;now=now-mx;
Q[2].push(max(now,mx)-(LL)i*q);
Q[3].push(min(now,mx)-(LL)i*q);
}
for(register int i=t;i<=m;i+=t) printf("%lld ",ans[i]);
puts("");int yy=1;
for(register int i=1;i<=n+m;i++){
LL x=-inf,y=-inf,z=-inf;
if(Q[1].size()) x=Q[1].front();
if(Q[2].size()) y=Q[2].front();
if(Q[3].size()) z=Q[3].front();
LL mx=x;int r=1;
if(y>mx) mx=y,r=2;
if(z>mx) mx=z,r=3;Q[r].pop();
// cout<<mx+(LL)q*m<<" ";
if(yy<t) {yy++;continue;}
yy=1;printf("%lld ",mx+(LL)m*q);
}
return 0;
}

LUOGU P2827 蚯蚓 (noip 2016)的更多相关文章

  1. [Luogu P2827] 蚯蚓 (巧妙的模拟)

    题面: 传送门:https://www.luogu.org/problemnew/show/P2827 Solution 看到这题,我们肯定会有一个大胆想法. 那就是直接用堆模拟这个过程. 对于q,我 ...

  2. Luogu P2827 蚯蚓(模拟)

    P2827 蚯蚓 题意 题目描述 本题中,我们将用符号\(\lfloor c\rfloor\)表示对\(c\)向下取整,例如:\(\lfloor 3.0\rfloor =\lfloor 3.1\rfl ...

  3. 【luogu P2827 蚯蚓】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2827 35分:暴力sortO(mnlogn). 80分:考虑到每次不好维护不被切的点+q,正难则反.改成维护 ...

  4. Luogu P2827 蚯蚓

    看到题目就可以想到直接开的堆模拟的过程了吧,这个还是很naive的 注意在用堆做的时候也是要明智一点的,对于蚯蚓长度的相加肯定不能直接遍历并加上,还是可以差分一下的 其实说白了就是把集体加->单 ...

  5. NOIP 2016 D2T2 蚯蚓](思维)

    NOIP 2016 D2T2 蚯蚓 题目大意 本题中,我们将用符号 \(\lfloor c \rfloor⌊c⌋\) 表示对 \(c\) 向下取整,例如:\(\lfloor 3.0 \rfloor = ...

  6. NOIp 2016 总结

    NOIp 2016 总结 -----YJSheep Day 0 对于考前的前一天,晚自习在复习图论的最短路和生成树,加深了图的理解.睡得比较早,养足精力明日再战. Day 1 拿到题目,先过一边,题目 ...

  7. 【NOIP 2016】斗地主

    题意 NOIP 2016 斗地主 给你一些牌,按照斗地主的出牌方式,问最少多少次出完所有的牌. 分析 这道题的做法是DFS. 为了体现这道题的锻炼效果,我自己写了好多个代码. Ver1 直接暴力搞,加 ...

  8. [NOIP]2016天天爱跑步

    [NOIP]2016天天爱跑步 标签: LCA 树上差分 NOIP Description 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ...

  9. NOIP 2016 迟来的满贯

    17-03-22,雨 17-03-22,一个特别重要的日子 在这一天,本蒻攻克了NOIP 2016最难的一题,D1T2——天天爱跑步 实现了NOIP 2016的AK! YAYAYAYAYAYAY 自然 ...

随机推荐

  1. idea怎么打war包

    1.上方导航栏粥找到 Buid——> Bild Artifacts... 2.弹出框中选择 3.war包打好啦,一般放在编译的 target目录下

  2. SpringBoot使用注解方式整合Redis

    1.首先导入使用Maven导入jar包 <dependency> <groupId>org.springframework.boot</groupId> <a ...

  3. python 之 字符串处理

    分割字符串 根据某个分割符分割 >>> a = '1,2,3,4' >>> a.split(',') ['] 根据多个分隔符分割 >>> line ...

  4. WPF MVVM模式不用Prism

    上一个例子使用了Prism.这个例子不用Prism.用自己封装的库LiuxhCSDLL,其实也差不多. 一.程序结构 二.界面代码以及界面效果 <Window x:Class="WPF ...

  5. linux php5.4安装phalcon

    PHP版本5.6以上,安装可参考.https://blog.csdn.net/happysdh/article/details/51450654 在phalcon3.0以后就不支持php5.4了. 要 ...

  6. nextjs服务端渲染原理

    1. 简单的介绍一下 nextjs是react进行服务端渲染的一个工具,默认以根目录下的pages为渲染路由 比如我在pages目录下创建一个index.js文件,然后export default一个 ...

  7. 在Linux下使用gcc运行C语言程序

    Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具.本教程毫不犹豫地使用GCC来编译C程序. ...

  8. PAT甲级——A1036 Boys vs Girls

    This time you are asked to tell the difference between the lowest grade of all the male students and ...

  9. WPF 禁用中文

    <TextBox InputMethod.IsInputMethodEnabled="False" />

  10. hadooplinux服务连接window平台问题

    window eclipse下有hadoop 服务插件可以安装方便开发,今天突然发现连接不上做测试,鼓捣了一下.大多是因为端口问题 9000是DFS端口 50020是IPC服务端口,50070是web ...