$Luogu$

$Sol$

乍一看就是个模拟叭,用个优先队列维护不就好了.不过这里有一个问题就是怎么解决没被切的蚯蚓的增长问题.可以这样处理,每次切一条蚯蚓,给切完之后的都减去$q$,最后输出答案时都加上$q*m$就$OK$辣.还有一个要注意的地方就是每次切蚯蚓的时候都要求出它的实际长度而不是存在优先队列里的长度.

但是这样只有$80$的样子.瞎分析一波复杂度似乎是$O(mlog_{n+m}^2)$.

考虑优化,如果能把这个$log^2$去掉就好了吖.

注意到,先被切的蚯蚓的较长的一段一定大于后被切的蚯蚓的较长的一段,先被切的蚯蚓的较短的一段一定大于后被切的较短的一段.于是不需要优先队列就可以维护单调性了.具体来说开三个数组,分别存还没被切的蚯蚓(初始数组,记得排序),被切了之后较长的那个蚯蚓,被切之后较短的蚯蚓.每次选取三个数组里最长的那个切,切完之后分别加入后面两个数组就好了不需要多余的维护.

$Code$

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cmath>
using namespace std;
int r()
{
int x=,y=;;char ch;
ch=getchar();
while(ch<''||ch>'') {if(ch=='-') y=-;ch=getchar();}
while(ch>=''&&ch<='') {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*y;
}
bool cmp(int x,int y)
{
return x>y;
}
int q[],q1[],q2[];
int n,m,qq,u,v,t;
double p;
int a[];
int rem;
priority_queue<int> ans;
int main()
{
n=r();m=r();qq=r();u=r();v=r();t=r();
p=(double)u/(double)v;
for(register int i=;i<=n;i++) q[i]=r();
sort(q+,q+n+,cmp);
int h=;
int h1=,t1=,h2=,t2=;
int top;
for(register int i=;i<=m;i++)
{
if(h>n) {if(q1[h1]>q2[h2]) top=q1[h1++];else top=q2[h2++];}
else if(q[h]>=q1[h1]&&q[h]>=q2[h2]) top=q[h++];
else if(q1[h1]>=q2[h2]) top=q1[h1++];
else top=q2[h2++];
top+=rem;
int x1=floor((double)top*p),x2=top-x1;
rem+=qq;
x1-=rem;x2-=rem;
q1[++t1]=x1;q2[++t2]=x2;
if(i%t==) printf("%d ",top);
}
printf("\n");
for(register int i=h;i<=n;i++) ans.push(q[i]);
for(register int i=h1;i<=t1;i++) ans.push(q1[i]);
for(register int i=h2;i<=t2;i++) ans.push(q2[i]);
for(int i=;ans.size();i++)
{
if(i%t==) printf("%d ",ans.top()+rem);
ans.pop();
}
return ;
}

View 去年的 Code

随机推荐

  1. 基于TableStore的海量气象格点数据解决方案实战

    前言 气象数据是一类典型的大数据,具有数据量大.时效性高.数据种类丰富等特点.气象数据中大量的数据是时空数据,记录了时间和空间范围内各个点的各个物理量的观测量或者模拟量,每天产生的数据量常在几十TB到 ...

  2. Go 语言开发工具

    Go 语言开发工具 LiteIDE LiteIDE是一款开源.跨平台的轻量级Go语言集成开发环境(IDE). 支持的操作系统 Windows x86 (32-bit or 64-bit) Linux ...

  3. H3C TCP连接的拆除

  4. 在对文件进行随机读写,RandomAccessFile类,如何提高其效率

    花1K内存实现高效I/O的RandomAccessFile类 JAVA的文件随机存取类(RandomAccessFile)的I/O效率较低.通过分析其中原因,提出解决方案.逐步展示如何创建具备缓存读写 ...

  5. 【原生JS】评论编辑器 文本操作

    效果图: HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...

  6. 洛谷P3957 跳房子 题解 二分答案/DP/RMQ

    题目链接:https://www.luogu.org/problem/P3957 这道题目我用到了如下算法: 线段树求区间最大值: 二分答案: DP求每一次枚举答案g时是否能够找到 \(\ge k\) ...

  7. linux mysql 查看默认端口号和修改端口号

    如何查看mysql 默认端口号和修改端口号 2015-03-19 17:42:18 1. 登录mysql [root@test /]# mysql -u root -p Enter password: ...

  8. centos7.0 可以访问HTML文件,不能访问PHP文件,因为php-fpm没有扩展包

    解决方法 :https://blog.csdn.net/ityang_/article/details/53980190 nginx调用PHP有sock方式和端口方式 1.确认nginx已经调用了ph ...

  9. C# 通过 probing 指定 dll 寻找文件夹

    在很大的项目开发,会发现项目引用的 dll 会很多,我想要按照不同的功能,将不同的 dll 放在不同的文件夹 简单的方法是通过修改 App.config 文件指定文件夹,如将文件移动到 abc\12 ...

  10. H3C使用ping命令--用户视图

    完整的ping命令,用于下面参考 <H3C>ping 1.1.1.1   PING 1.1.1.1: 56  data bytes, press CTRL_C to break     R ...