【uoj264】 NOIP2016—蚯蚓
http://uoj.ac/problem/264 (题目链接)
题意
n条蚯蚓,时间为m。每单位时间要可以将最长的蚯蚓切成len/2和len-len/2两份,长度为0的蚯蚓不会消失,因为每单位时间所有的蚯蚓的长度都会增长L。问当时间T是t的倍数的时候输出当前即将切断的蚯蚓的长度,完成切割后,输出按顺序输出长度排名为t的倍数的蚯蚓的长度。
Solution
我们构建3个单调队列,分别记为q[0],q[1],q[2]。其中q[0]记录初始时每条蚯蚓的长度,并将其按从大到小的顺序排列。q[1]记录每次切割后长的那一截的长度。q[2]记录每次切割后短的那一截的长度。对于蚯蚓增长的长度,我们可以运用标记的思想,因为每条蚯蚓所增长的长度都是一样的。
显然,这样子构出来的3个队列都是单调递减的,于是每次切割,取3个队列队首最大的元素进行切割,假设它的大小为x,当前增长长度为l,每单位时间蚯蚓长度增长L。那么,这条蚯蚓的长度len=x+l,切割后长度记为l1和l2,那么放入队列时将l1和l2都减去L+l,这样它们就可以和整个队列中的元素的标记同步了。
需要输出的时候判断一下当前的时间是否是t的倍数即可。
细节
切割的时候别用double,精度太萎,UOJ上被hack了。。
代码
// uoj264
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define RG register
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;
inline int gi() {
int x=0,f=1;char ch=getchar();
while (ch<'0' || ch>'9') {if (ch=='-') f=-1;ch=getchar();}
while (ch>='0' && ch<='9') {x=x*10+ch-'0';ch=getchar();}
return x*f;
} const int maxn=100010;
int n,m,L,u,v,t;
int a[maxn];
int head[3],q[3][10000010],tail[3]; inline bool cmp(int a,int b) {return a>b;} int main() {
n=gi(),m=gi(),L=gi(),u=gi(),v=gi(),t=gi();
memset(q,-0x7f,sizeof(q));
for (int i=1;i<=n;i++) q[0][i]=gi();
sort(q[0]+1,q[0]+1+n,cmp);
int l=0;
head[0]=head[1]=head[2]=1;
tail[0]=tail[1]=tail[2]=0;
tail[0]=n;
for (int x,l1,l2,op,i=1;i<=m;i++) {
op=q[0][head[0]]>q[1][head[1]] ? 0 : 1;
op=q[op][head[op]]>q[2][head[2]] ? op : 2;
x=q[op][head[op]++]+l;
if (i%t==0) printf("%d ",x);
l1=(LL)x*u/v;
l2=x-l1;
q[1][++tail[1]]=max(l1,l2)-l-L;
q[2][++tail[2]]=min(l1,l2)-l-L;
l+=L;
}
puts("");
for (int x,op,i=1;i<=n+m;i++) {
op=q[0][head[0]]>q[1][head[1]] ? 0 : 1;
op=q[op][head[op]]>q[2][head[2]] ? op : 2;
x=q[op][head[op]++]+l;
if (i%t==0) printf("%d ",x);
}
return 0;
}
【uoj264】 NOIP2016—蚯蚓的更多相关文章
- [Noip2016]蚯蚓 D2 T2 队列
		
[Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...
 - 【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)
		
Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮 ...
 - NC16430 [NOIP2016]蚯蚓
		
NC16430 [NOIP2016]蚯蚓 题目 题目描述 本题中,我们将用符号 \(\lfloor c \rfloor\) 表示对 c 向下取整,例如:\(\lfloor 3.0 \rfloor = ...
 - 【bzoj4721】[Noip2016]蚯蚓
		
题目描述 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐 ...
 - BZOJ4721 [Noip2016]蚯蚓
		
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
 - [NOIp2016] 蚯蚓
		
类型:单调队列 传送门:>Here< 题意:有$N$只蚯蚓,每秒都会伸长$q$.每一次都会有人选出最长的一条切成两半,长度分别是$\left \lfloor px \right \rflo ...
 - luogu2827 [NOIp2016]蚯蚓 (模拟)
		
可以直观地想到用优先队列来做,但数据范围是O(n)的 然后我们发现,因为我们每次挑出来的蚯蚓是单调的,所以把每个切成两段后,那两段也是对应单调的 也就是说,算上最一开始的蚯蚓,我们一共维护三个队列,三 ...
 - [NOIp2016]蚯蚓 (队列)
		
#\(\color{red}{\mathcal{Description}}\) LInk 这道题是个\(zz\)题 #\(\color{red}{\mathcal{Solution}}\) 我们考虑如 ...
 - 【bzoj4721】[Noip2016]蚯蚓  乱搞
		
题目描述 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐 ...
 
随机推荐
- Validate Binary Search Tree
			
Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ...
 - &12 二叉搜索树
			
#1,定义 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的 ...
 - velocity模板引擎学习(3)-异常处理
			
按上回继续,前面写过一篇Spring MVC下的异常处理.及Spring MVC下的ajax异常处理,今天看下换成velocity模板引擎后,如何处理异常页面: 一.404错误.500错误 <e ...
 - .net RPC框架选型
			
近期开始研究分布式架构,会涉及到一个最核心的组件:RPC(Remote Procedure Call Protocol).这个东西的稳定性与性能,直接决定了分布式架构系统的好坏.RPC技术,我们的产品 ...
 - 海王星给你好看!FineUI v4.0公测版发布暨《你找BUG我送书》活动开始(活动已结束!)
			
<FineUI v4.0 你找BUG我送书>活动已结束,恭喜如下三位网友获得由 FineUI 作者亲自翻译的图书<jQuery实战 第二版>! 奋斗~ 吉吉﹑ purplebo ...
 - Python2.6-原理之类和oop(上)
			
来自<python学习手册第四版>第六部分 一.oop:宏伟蓝图(26章) 在这之前的部分中,经常会使用"对象"这个词,其实,到目前为止都是以对象为基础的,在脚本中传递 ...
 - Expression Blend4经验分享:自适应布局浅析
			
今天分享一下Blend制作自适应分辨率布局的经验,大家先看下效果图: 这是一个标准的三分天下的布局,两侧的红色区域是背景区域,是用来干吗的呢,下面简单的分析一下,大家就明白了. 1.拿到一个项目,进行 ...
 - 深入理解python的yield和generator
			
原文发表在我的博客主页,转载请注明出处 前言 没有用过的东西,没有深刻理解的东西很难说自己会,而且被别人一问必然破绽百出.虽然之前有接触过python协程的概念,但是只是走马观花,这两天的一次交谈中, ...
 - centos hadoop搭建准备
			
永久修改主机名:hostnamectl set-hostname <hostname> IP地址: BOOTPROTO=static IPADDR=192.168.31.128NETMAS ...
 - JavaScript UI选型及Jquery EasyUI使用经验谈
			
最近由于项目需要,对js UI作了一些简单的了解和使用,有自己的一些想法,在这里留个记录. 当然,我的专注点在管理系统的范围内,所以互联网网站及其他形态的应用这里不提及,所以jQuery UI和Boo ...