【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的情况可以用一个 ...
随机推荐
- php-resque 简单的php消息队列
摘要: 消息队列是个好东西,各种×××MQ很多.然而看一下它们的文档,你得吓尿,什么鬼,我只是想用它触发个短信接口而已. 幸好也有简单的.这次是php-resque 安装 首先这货需要在linux下跑 ...
- c# excel转换为DataTable
System.Data.DataTable GetDataFromExcelByCom(bool hasTitle, string fileName) { //OpenFileDialog openF ...
- flowable ProcessEngine和ProcessEngineConfiguration
ProcessEngine是流程引擎,ProcessEngineConfiguration与前面四个引擎配置有些不同. ProcessEngineConfiguration增加了邮件服务和httpCl ...
- restful 协议 +面试
restful 协议:面向资源软件架构风格 API 定义 一些预先定义的函数,目的是能够让应用程序或开发人员能够具有访问指定网络资源的能力,而无需关心访问的远吗以及内部的工作机制细节. RESTful ...
- vue-router(一)
vue路由再vue开发的项目中可以说是一个必用的组件,而这个部分的水却依旧很深,今天我们深入分析其内部的东西,先看这样一个效果: 大家 可以看到上图中,我们通过两种方式实现了一个vue路由跳转的过度动 ...
- cocos2d-x 发布win32 release版本后找不到msvcr110.dll
解决方法: 安装Visual C++ Redistributable for Visual Studio 2012 //下载地址 http://www.microsoft.com/zh-CN/down ...
- ios逆向工程-内部钩子(Method Swizzling)
Method Swizzling(方法调配) 怎么说呢,先了解什么是钩子为什么用钩子,学过C++的朋友应该清楚,hook就是用来获得(截断/改变)底层调用的方法.这样我们可以自由的修改或者读取一些想要 ...
- 从BZOJ2242看数论基础算法:快速幂,gcd,exgcd,BSGS
LINK 其实就是三个板子 1.快速幂 快速幂,通过把指数转化成二进制位来优化幂运算,基础知识 2.gcd和exgcd gcd就是所谓的辗转相除法,在这里用取模的形式体现出来 \(gcd(a,b)\) ...
- BZOJ3687 简单题 【bitset】
BZOJ3687 简单题 Description 小呆开始研究集合论了,他提出了关于一个数集四个问题: 1.子集的异或和的算术和. 2.子集的异或和的异或和. 3.子集的算术和的算术和. 4.子集的算 ...
- 生成代码,从 T1 到 T16 —— 自动生成多个类型的泛型
当你想写一个泛型 的类型的时候,是否想过两个泛型参数.三个泛型参数.四个泛型参数或更多泛型参数的版本如何编写呢?是一个个编写?类小还好,类大了就杯具! 事实上,在 Visual Studio 中生成代 ...