【bzoj4721】[Noip2016]蚯蚓
题目描述
输入
输出
样例输入
3 7 1 1 3 1
3 3 2
样例输出
3 4 4 4 5 5 6
6 6 6 5 5 4 4 3 2 2
题解
队列乱搞题
由于先切的两段一定大于等于后切的对应的两段,
于是可以用两个队列分别存储[px]段和x-[px]段,还有一个存储原始长度。
每次把所有没切的长度+q,相当于把切了的长度-q,然后查找时再一起加上。
注意除法需要long long。
还有,在bzoj上,可能会PE无数次,只能按照样例格式输出,不能多任何的空格和换行。
#include <cstdio>
#include <algorithm>
#define inf 0x7fffffff
using namespace std;
int q[3][8000001] , l[3] , r[3] = {-1 , -1 , -1} , a[100001];
bool cmp(int a , int b)
{
return a > b;
}
int getmax()
{
int k = -inf , ans = 0;
if(l[0] <= r[0] && q[0][l[0]] > k) k = q[0][l[0]] , ans = 0;
if(l[1] <= r[1] && q[1][l[1]] > k) k = q[1][l[1]] , ans = 1;
if(l[2] <= r[2] && q[2][l[2]] > k) k = q[2][l[2]] , ans = 2;
return ans;
}
int main()
{
int n , m , g , u , v , t , i , p , c;
scanf("%d%d%d%d%d%d" , &n , &m , &g , &u , &v , &t);
for(i = 0 ; i < n ; i ++ )
scanf("%d" , &a[i]);
sort(a , a + n , cmp);
for(i = 0 ; i < n ; i ++ )
q[0][++r[0]] = a[i];
for(i = 1 ; i <= m ; i ++ )
{
p = getmax();
c = q[p][l[p]++] + g * (i - 1);
if(i % t == 0)
{
if(i != t)
printf(" ");
printf("%d" , c);
}
q[1][++r[1]] = (int)((long long)c * u / v) - g * i;
q[2][++r[2]] = c - (int)((long long)c * u / v) - g * i;
}
printf("\n");
for(i = 1 ; i <= m + n ; i ++ )
{
p = getmax();
c = q[p][l[p]++] + g * m;
if(i % t == 0)
{
if(i != t)
printf(" ");
printf("%d" , c);
}
}
printf("\n");
return 0;
}
【bzoj4721】[Noip2016]蚯蚓的更多相关文章
- BZOJ4721 [Noip2016]蚯蚓
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- [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.蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐 ...
- 【uoj264】 NOIP2016—蚯蚓
http://uoj.ac/problem/264 (题目链接) 题意 n条蚯蚓,时间为m.每单位时间要可以将最长的蚯蚓切成len/2和len-len/2两份,长度为0的蚯蚓不会消失,因为每单位时间所 ...
- [NOIp2016] 蚯蚓
类型:单调队列 传送门:>Here< 题意:有$N$只蚯蚓,每秒都会伸长$q$.每一次都会有人选出最长的一条切成两半,长度分别是$\left \lfloor px \right \rflo ...
- luogu2827 [NOIp2016]蚯蚓 (模拟)
可以直观地想到用优先队列来做,但数据范围是O(n)的 然后我们发现,因为我们每次挑出来的蚯蚓是单调的,所以把每个切成两段后,那两段也是对应单调的 也就是说,算上最一开始的蚯蚓,我们一共维护三个队列,三 ...
- [NOIp2016]蚯蚓 (队列)
#\(\color{red}{\mathcal{Description}}\) LInk 这道题是个\(zz\)题 #\(\color{red}{\mathcal{Solution}}\) 我们考虑如 ...
随机推荐
- Linux进程环境
Linux下C程序都是main开始的,main函数的原型是: int main(int argc, char **argv) 其中argc是命令行参数的数目,argc是指向参数的各个指针所构成的数组. ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- hadoop fs -ls no such file or directory
http://blog.csdn.net/baolibin528/article/details/43650919
- Linux文本查看及处理.md
cat cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 主要功能 一次显示整个文件:cat ...
- Linux Posix线程条件变量
生产者消费者模型 .多个线程操作全局变量n,需要做成临界区(要加锁--线程锁或者信号量) .调用函数pthread_cond_wait(&g_cond,&g_mutex)让这个线程锁在 ...
- 解读ASP.NET 5 & MVC6系列(8):Session与Caching
在之前的版本中,Session存在于System.Web中,新版ASP.NET 5中由于不在依赖于System.Web.dll库了,所以相应的,Session也就成了ASP.NET 5中一个可配置的模 ...
- 如何有效地解决ie7,IE8不支持document.getElmentsByClassName的问题
1.复制此代码到你js代码的最前面即可 if(!document.getElementsByClassName){ document.getElementsByClassName = functi ...
- 一个python的邮件发送脚本,自动,定时,可以附件发送,抄送,附有说明文件
#!/bin/env python # -*- coding: utf-8 -*- import datetime import smtplib import os,sys from email.mi ...
- iOS之UITableView组头组尾视图/标题悬停
最近笔者在公司的iOS开发中,有一个iOS开发同事跑来问了两个问题:1.给UITableView设置了组头和组尾视图,但是一直显示不出来?2.UITableView的section的header和fo ...
- 基于python的selenium自动化测试环境安装
1. Python2安装 官方网站:https://www.python.org/downloads/ (python3或新版本已经默认集成了pip包和path,安装的时候打勾就行,可以直接跳过下面第 ...