NOIP 2016【蚯蚓】
好吧,我承认我是个智障……
这道题一眼看上去就是个堆,然而实际上有单调性。
注意到,如果 \(q = 0\) 的话,将蚯蚓的左右两边分开丢进两个队列中,则两个队列都是单调不增的,因为每次取出的蚯蚓长度单调不增。
对于 \(q \neq 0\),因为除了切开的两只,所有蚯蚓长度都增加了,我们维护这个增加的值,表示三个队列(包括初始队列)中所有的元素都要加上这个值才是真实的长度。但是这样刚切开的蚯蚓的左右两边长度就多增加了 \(q\),所以我们把他们的长度减 \(q\) 再丢进两个队列中。这样就保证了每个元素加上这个元素后就是真实的长度。
至于单调性,和 \(q=0\) 相比,每次只有最小的两个变得更小,而总体加上一个数是不影响单调性的,所以仍然是单调不增的。
我是个智障是因为我代码里有这样一句话:
memset(a+1,-127,sizeof(a));
于是数组越界就炸飞天了,别问我为什么,我该吃药了……
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define RG register
#define N 7100005
inline int gi()
{
RG int ret; RG char ch;
ret=0, ch=getchar();
while (ch < '0' || ch > '9')
ch=getchar();
while (ch >= '0' && ch <= '9')
ret=(ret<<3)+(ret<<1)+ch-'0', ch=getchar();
return ret;
}
int a[N],l[N],r[N],ha,hl,hr,ta,tl,tr,now;
inline void get()
{
if (a[ha] > l[hl])
if (a[ha] > r[hr])
now=a[ha++];
else
now=r[hr++];
else
if (l[hl] > r[hr])
now=l[hl++];
else
now=r[hr++];
}
int main()
{
// freopen("earthworm.in","r",stdin);
// freopen("earthworm.out","w",stdout);
int n,m,q,u,v,t,i,inc,le,ri;
n=gi(), m=gi(), q=gi(), u=gi(), v=gi(), t=gi();
memset(a,-127,sizeof(a));
memset(l,-127,sizeof(l));
memset(r,-127,sizeof(r));
for (i=1; i<=n; ++i)
a[i]=gi();
sort(a+1,a+n+1,greater <int> ());
ha=hl=hr=1, tl=tr=0, ta=n, inc=0, i=1;
n+=m;
while (m--)
{
get();
now+=inc;
if (i == t)
printf("%d ",now), i=0;
le=(ll)now*u/v, ri=now-le;
inc+=q, i++;
le-=inc, ri-=inc;
l[++tl]=le, r[++tr]=ri;
}
putchar('\n');
i=1;
while (n--)
{
get();
if (i == t)
i=0, printf("%d ",now+inc);
i++;
}
return 0;
}
NOIP 2016【蚯蚓】的更多相关文章
- NOIP 2016 蚯蚓 (luogu 2827 & uoj 264) - 鬼畜的优化
题目描述 本题中,我们将用符号\lfloor c \rfloor⌊c⌋表示对c向下取整,例如:\lfloor 3.0 \rfloor= \lfloor 3.1 \rfloor=\lfloor 3.9 ...
- [NOIP 2016] 蚯蚓
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4721 [算法] 首先,我们可以维护一个堆,堆中存放蚯蚓的长度,由于除当前蚯蚓其他的蚯 ...
- NOIP 2016 蚯蚓 题解
一道有趣的题目,首先想到合并果子,然而发现会超时,我们可以发现首先拿出来的切掉后比后拿出来切掉后还是还长,即满足单调递增,故建立三个队列即可. 代码 #include<bits/stdc++.h ...
- NOIP 2016 D2T2 蚯蚓](思维)
NOIP 2016 D2T2 蚯蚓 题目大意 本题中,我们将用符号 \(\lfloor c \rfloor⌊c⌋\) 表示对 \(c\) 向下取整,例如:\(\lfloor 3.0 \rfloor = ...
- NOIp 2016 总结
NOIp 2016 总结 -----YJSheep Day 0 对于考前的前一天,晚自习在复习图论的最短路和生成树,加深了图的理解.睡得比较早,养足精力明日再战. Day 1 拿到题目,先过一边,题目 ...
- 【NOIP 2016】斗地主
题意 NOIP 2016 斗地主 给你一些牌,按照斗地主的出牌方式,问最少多少次出完所有的牌. 分析 这道题的做法是DFS. 为了体现这道题的锻炼效果,我自己写了好多个代码. Ver1 直接暴力搞,加 ...
- [NOIP]2016天天爱跑步
[NOIP]2016天天爱跑步 标签: LCA 树上差分 NOIP Description 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ...
- NOIP 2016 迟来的满贯
17-03-22,雨 17-03-22,一个特别重要的日子 在这一天,本蒻攻克了NOIP 2016最难的一题,D1T2——天天爱跑步 实现了NOIP 2016的AK! YAYAYAYAYAYAY 自然 ...
- 【NOIP】提高组2016 蚯蚓
[题目链接]Universal Online Judge [题解]本题最大的特点在于从大到小切以及切分规则一致,都是切成px和x-px. 由这两个特点很容易得到结论,后切的蚯蚓得到的px一定比先切的蚯 ...
随机推荐
- win10 只要打开文件对话框就卡死解决方法
我电脑的问题是:win10系统,只要打开 文件对话框就卡死,假死,cpu100% 一直没有解决,但是只要把缩略图关了,就ok. 但是又想要留着缩略图,还是得显示,于是乎一直在找解决办法. 此方法好像可 ...
- vue2.X props 数据传递 实现组件内数据与组件外的数据的双向绑定
vue2.0 禁止 子组件修改父组件数据 在Vue2中组件的props的数据流动改为了只能单向流动,即只能由组件外(调用组件方)通过组件的DOM属性attribute传递props给组件内,组件内只能 ...
- 重读金典------高质量C编程指南(林锐)-------第三章 命名规则
3.1 共性规则 规则:标识符应该直观且可以拼读,可进行英语翻译. 规则:标识符的长度需要控制好,不应该太长. 规则:命名规则应该同操作系统或者开发工具等保持一致,比如大小写混用.AddChar ...
- IOS知识点收集
17 duplicate symbols for architecture armv7s 用cocoapods 的时候出现,这种错误一般是由重复引用库文件引起. 原因:自己尝试添加Reachabil ...
- sql 时间相关
1.常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233') (1)DATENAME ( datepart ,date ) 返回表示指定日期的指定日期部分的字符 ...
- Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号 1. dwr的长处相对于ajax来说.. 1 2. DWR工作原理 1 3. Dwr的架构 2 4. 自己 ...
- 集群通信组件Tribes之怎样维护集群成员信息
一个集群包括若干成员,要对这些成员进行管理就必需要有一张包括全部成员的列表.当要对某个节点做操作时通过这个列表能够准确找到该节点的地址进而对该节点发送操作消息.怎样维护这张包括全部成员的列表是本节要讨 ...
- MVC初了解
MVC:Model-View-Controller,将数据和显示形式分离. Model:能够看做是三层中的D层+B层,实现业务逻辑和与数据库的交互. View:看做是U层,用来显示数据. Contro ...
- rootkit基础
应用程序总是离不开系统内核所提供的服务,比如它要使用内存的时候,只要跟操作系统申请就行了,而不用自己操心哪里有空闲的内存空间等问题,实际上,这些问题是由操作系统的内核来代劳的.站在黑客的角度讲,如果能 ...
- 贷前系统ElasticSearch实践总结
贷前系统负责从进件到放款前所有业务流程的实现,其中涉及一些数据量较大.条件多样且复杂的综合查询,引入ElasticSearch主要是为了提高查询效率,并希望基于ElasticSearch快速实现一个简 ...