【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)
Description
Input
Output
Sample Input
3 3 2
Sample Output
6 6 6 5 5 4 4 3 2 2
- 1、40-65分做法:用stl中的优先队列,维护最大值。如何每次+p呢,开一个变量now,记录如今已经加过多大的数了,最后在输出时再加回去。那么如何解决当前被切的的蚯蚓不+p呢,我们插入优先队列时插入num-p即可。
- 2、100分做法:我们现在维护三个队列(主队,长蚯蚓队,短蚯蚓队)。可以证明,这样的三个队列(主队,长蚯蚓队,短蚯蚓队)都是单调的,也就是队首大于等于该队的所有元素。这么我们取最大值只需要判断这3个队伍的队首即可。这题时间有点紧,要手写队列,还要快读,不然小心bzoj上挂掉。
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,q,u,v,t,now,a[];
struct queue
{
int l,r,v[];
void push(int x)
{
v[++r]=x;
}
void pop()
{
l++;
}
int front()
{
return v[l];
}
bool empty()
{
if(l>r) return true;
return false;
}
}p[];
int getbig()
{
for(int i=;i<;i++)
{
if(p[i].empty()) continue;
if(!p[].empty()&&p[].front()>p[i].front()) continue;
if(!p[].empty()&&p[].front()>p[i].front()) continue;
if(!p[].empty()&&p[].front()>p[i].front()) continue;
int x=p[i].front();p[i].pop();
return x;
}
}
int in()
{
int ret=;char c;
while(c<''||c>'') c=getchar();
while(c>=''&&c<='')
{
ret=(ret<<)+(ret<<)+c-'';
c=getchar();
}
return ret;
}
int main()
{
int x;
n=in();m=in();q=in();u=in();v=in();t=in();
for(int i=;i<=n;i++) a[i]=in();
sort(a+,a+n+);
for(int i=n;i>=;i--)
p[].push(a[i]);//保证queue中从大到小
p[].l=p[].l=p[].l=;
for(int i=;i<=m;i++)
{
x=getbig();
if(i%t==)
{
if(i!=t) printf(" ");
printf("%d",x+now);
}
p[].push((long long)(x+now)*u/v-now-q);
p[].push((x+now)-(long long)(x+now)*u/v-now-q);
now+=q;
}
printf("\n");
int k=;
while((!p[].empty()||!p[].empty()||!p[].empty()))
{
k++;
x=getbig();
if(k%t==)
{
if(k!=t) printf(" ");
printf("%d",x+now);
}
}
return ;
}终于解决了【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列),打卡。
【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)的更多相关文章
- 洛谷P2827 蚯蚓 题解
洛谷P2827 蚯蚓 题解 题目描述 本题中,我们将用符号 ⌊c⌋ 表示对 c 向下取整. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现 ...
- NOIP 2016 洛谷 P2827 蚯蚓 题解
题目传送门 展开 题目描述 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手 ...
- 洛谷 P2827 蚯蚓 解题报告
P2827 蚯蚓 题目描述 本题中,我们将用符号 \(\lfloor c \rfloor\) 表示对 \(c\) 向下取整,例如:\(\lfloor 3.0 \rfloor = \lfloor 3.1 ...
- 洛谷P2827 蚯蚓——思路题
题目:https://www.luogu.org/problemnew/show/P2827 思路... 用优先队列模拟做的话,时间主要消耗在每次的排序上: 能不能不要每次排序呢? 关注先后被砍的两条 ...
- 洛谷——P2827 蚯蚓
P2827 蚯蚓 题目描述 本题中,我们将用符号 \lfloor c \rfloor⌊c⌋ 表示对 cc 向下取整,例如:\lfloor 3.0 \rfloor = \lfloor 3.1 \rflo ...
- 洛谷 P2827 蚯蚓
题目描述 本题中,我们将用符号\lfloor c \rfloor⌊c⌋表示对c向下取整,例如:\lfloor 3.0 \rfloor= \lfloor 3.1 \rfloor=\lfloor 3.9 ...
- 洛谷P2827 蚯蚓(单调队列)
题意 初始时有$n$个蚯蚓,每个长度为$a[i]$ 有$m$个时间,每个时间点找出长度最大的蚯蚓,把它切成两段,分别为$a[i] * p$和$a[i] - a[i] * p$,除这两段外其他的长度都加 ...
- 洛谷p2827蚯蚓题解
题目 算法标签里的算法什么的都不会啊 什么二叉堆?? qbxt出去学习的时候讲的,一段时间之前做的,现在才写到博客上的 维护3个队列,队列1表示最开始的蚯蚓,队列2表示每一次被切的蚯蚓被分开的较长的那 ...
- 洛谷 P2827 蚯蚓 题解
每日一题 day32 打卡 Analysis 我们可以想一下,对于每一秒除了被切的哪一个所有的蚯蚓都增长Q米,我们来维护3个队列,队列1表示最开始的蚯蚓,队列2表示每一次被切的蚯蚓被分开的较长的那一部 ...
- 洛谷P2827蚯蚓
题目 堆+模拟,还有一个小优化(优化后跟堆关系不大,而是类似于贪心). 如果不加优化的话,卡常可以卡到85. 思路是对于对每一秒进行模拟,用堆来维护动态的最大值,然后对于每个长度都加q的情况可以用一个 ...
随机推荐
- How to choose the number oftopics/partitions in a Kafka cluster?
How to choose the number oftopics/partitions in a Kafka cluster? 如何为一个kafka集群选择topics/partitions的数量? ...
- JSCover(查看代码覆盖率)
1. [文档](http://tntim96.github.io/JSCover/manual/manual.xml)1. [下载](https://sourceforge.net/projects/ ...
- js之验证码倒计时功能
<!DOCTYPE html> <html > <head> <meta http-equiv="Content-Type" conten ...
- js之瀑布流的实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- OC中使用单例模式
static Config * instance = nil; +(Config *) Instance { @synchronized(self) { if(nil == instance) { [ ...
- mongo 指令
简单查询1: db.find( {}, {} ) 第一个{} 是条件,第二个{}是需要那些属性, db.find( {} ) 第二个{}没有,代表返回所有属性 db.find( {age: ...
- 3DsMax动画插件
* 简易骨骼动画: Mesh当前帧顶点 = Mesh绑定时顶点 * 绑定时骨骼的变换到本帧骨骼的变换的改变量. = Mesh绑定时顶点 * 绑定时骨骼的变换的逆矩阵 * 本帧的骨骼变换. = Mesh ...
- BZOJ2002 Hnoi2010 Bounce 弹飞绵羊 【LCT】【分块】
BZOJ2002 Hnoi2010 Bounce 弹飞绵羊 Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始, ...
- 剑指offer第七章&第八章
剑指offer第七章&第八章 1.把字符串转换成整数 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串 ...
- 《DSP using MATLAB》示例Example 6.9
代码: % All-Pole IIR filter to Lattice structure filter a = [1, 13/24, 5/8, 1/3]; K = dir2latc(a) % To ...