【不知道怎么分类】NOIP2016 蚯蚓
题目大意
洛谷链接
给出\(n\)条蚯蚓,给出\(m\)秒,每一秒都把蚯蚓中最长的蚯蚓分成两段,一段是原来的\(p\)倍,剩下的就是\((1-p)\)倍。每一秒,除了刚刚产生的两条新蚯蚓,其余蚯蚓长度都会增加一个非负整数\(q\)。
非整数均向下取整。
输入格式
第一行包含六个整数\(n,m,q,u,v,t\),其中:\(n,m,q\) 的意义见【问题描述】;
\(u,v,t\)均为正整数;
你需要自己计算\(p=u/v\)(保证\(0<u<v\));
\(t\)是输出参数,其含义将会在【输出格式】中解释。
第二行包含 \(n\)个非负整数,为\(a_1,a_2,\dots,a_n\),即初始时 \(n\) 只蚯蚓的长度。
同一行中相邻的两个数之间,恰好用一个空格隔开。
数据范围
\(1\leq n\leq 10^5,0\leq m\leq 7\times 10^6,0<u<v\leq 10^9,0\leq q\leq 2000,1\leq t\leq 71,0\leq a_i\leq 1\)。
输出格式
第一行按时间顺序输出每一秒被切断蚯蚓在切断前的长度。
第二行输出\(m\)秒后从大到小每条蚯蚓的长度。
同一行中相邻的两个数之间,恰好用一个空格隔开。即使某一行没有任何数需要输出,也应输出一个空行。
思路
首先看到题可以有一种很暴力的方法就是用优先队列直接取队首暴力,但是显然不行,因为剪短一条蚯蚓别的蚯蚓还会长大。
可以想到的是区间修改。不过这个区间一定是不算最大的那个之外所有的,所以为了简单一点,可以考虑只修改最大的那个蚯蚓。每一次记录一下增加的长度,最后再加。至于最大的不用加的那个,直接减去需要加的数就可以了,这样还不影响排序。
不过实测这样会T,而且我T疯了(正好对应分享题题号T老姚太强了orz)
然后就优化,可以看出,一开始将蚯蚓的长度排好序后,因为每次切断的比例是一定的,所以最大的蚯蚓切断后形成的两条蚯蚓各自一定大于等于第二大的蚯蚓切断形成的两条蚯蚓。
所以切出来的两条蚯蚓再分别放在两个数组中sort一下,这样就变成了三个数组。每次切的时候找三个数组中最大的切就好了。
(据说用STL的话会T,各位可以试试。)
【不知道怎么分类】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.蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐 ...
- 【uoj264】 NOIP2016—蚯蚓
http://uoj.ac/problem/264 (题目链接) 题意 n条蚯蚓,时间为m.每单位时间要可以将最长的蚯蚓切成len/2和len-len/2两份,长度为0的蚯蚓不会消失,因为每单位时间所 ...
- 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}}\) 我们考虑如 ...
随机推荐
- 操作BOM对象
操作BOM对象 目录 操作BOM对象 1. 浏览器介绍 2. window 3. Navigator(不建议使用) 4. screan 5. location(重要) 6. document(内容:D ...
- python基础 格式化输出
格式化输出 '%s %d %.2f' % ('Novak', 33, 1.88) 需要逗号
- python基础:网络编程
一.网络编程 简而言之,就是通过代码打开一个url,获得返回结果并做处理.通常所说的python爬虫,就属于网络编程 二.urllib模块进行网络编程 这个方法很繁琐,不建议使用.了解 示例1: 获取 ...
- Salesforce LWC学习(二十五) Jest Test
本篇参看: https://trailhead.salesforce.com/content/learn/modules/test-lightning-web-components https://j ...
- Mysql主从分离与双机热备超详细配置
一.概述 本例是在Windows环境,基于一台已经安装好的Mysql57,在本机安装第二台Mysql57服务. 读完本篇内容,你可以了解到Mysql的主从分离与双机热备的知识,以及配置期间问题的解决方 ...
- Django 中 a href标签 使用方法 跳转页面(Django四)
上次我已经用Django启动了一个登录模板页面 具体过程见:Django启动我的第一个模板页面 但问题是我们只能通过监听的端口访问这一个页面,不能通过页面的一些连接跳转到其他页面如下,我们不能点击注册 ...
- mysql版本和模式查询
查找数据库的: select version() select @@sql_mode 上面是查版本号,下面是查sql-mode,改sql-model要在mysql目录下配置文件 my.ini, 改修改 ...
- python中实现参数化的原理
k就是 <参数名>
- 乔悟空-CTF-i春秋-Web-Not Found-🙋🏻♂️
2020.09.08 又是匆匆忙忙的一天- 做题 题目 题目地址 做题 做题??做个屁,啥也不知道,干瞪眼
- [剑指Offer]56-数组中数字出现的次数(位运算)
题目一 数组中只出现一次的数字 题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字 题解 异或. 先考虑:数组中只有一个数字只出现了一次,其他数字都出现了 ...