$Noip2016/Luogu2827$蚯蚓
$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
随机推荐
- P2P需集齐四大证照
今后做P2P需集齐四大证照 比牌照制还严 2016-09-05 11:53:24 分类:热点观察 作者:汪祖刚 8月24日,P2P网贷监管细则在千呼万唤中始出来,整个行业内外的关注热度可谓史无前例.有 ...
- css3制作动画性能问题
这篇文章主要讲的是怎样制作流畅动画,特别是针对移动端.在这里我首先介绍制作动画的几种方法的优缺点:接着会着重介绍用css3制作动画的注意事项. 1.用canvas.css3.jquery制作动画 Ca ...
- H3C路由器Telnet服务配置命令
- Helm V3 新版本发布
Helm v3.0.0 Alpha 1 is coming! Helm 作为 Kubernetes 体系的包管理工具,已经逐渐成为了事实上的应用分发标准.根据 2018 年 CNCF 的一项云原生用户 ...
- 2018-6-24-WPF-使用RPC调用其他进程
title author date CreateTime categories WPF 使用RPC调用其他进程 lindexi 2018-06-24 14:41:29 +0800 2018-2-13 ...
- Nginx 的 location
一.location语法 语法: Syntax: location [ = | ~ | ~* | ^~ ] uri { ... } location @name { ... } Default: — ...
- pytorch入坑一 | Tensor及其基本操作
由于之前的草稿都没了,现在只有重写…. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...
- C# “不支持给定路径的格式”异常处理
问题背景 无聊研究了一下怎么发送邮件(包含附件),但发现附带的文件路径除了报错就是报错,不知道为什么. 用了不下好几种方式,比如 var x = "E:\\Git\\cmd\\git.exe ...
- 【hdu 1112】The Proper Key
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...
- WPF 托盘显示
本文告诉大家如何在 WPF 实现在托盘显示,同时托盘可以右击打开菜单,双击执行指定的代码 NotifyIcon WPF 通过 Nuget 安装 Hardcodet.NotifyIcon.Wpf 可以快 ...