Description

Solution

这题算是一道结论题,
先来想一下,当q=0时,很显然有结论:
1. 对于所有没有被切过的蚯蚓,一定是越切越短。
2. 对于被切开的两段,随着时间的增加,新切的两段分别都是越来越短。

也就是说,只要开3个队列,每次取出最大值即可,

那么当q>0时,我们发现,以上的性质同样符合,所以只要多维护一个时间即可。

复杂度:O(n)O(n)

Code

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef double db;
const int N=7000500,INF=2147483640;
int n,m,ans,m1,sc,Q,W;
db P;
int s[3],ti[3];
struct qqww
{int v,t,n;
}t,d[3][N];
bool operator <(qqww q,qqww w){return q.v-q.t*m1<w.v-w.t*m1;}
qqww max(qqww q,qqww w){return (q.v-q.t*m1>w.v-w.t*m1)?q:w;}
bool PX(qqww q,qqww w){return w<q;}
int main()
{freopen("earthworm.in","r",stdin);freopen("earthworm.out","w",stdout);int q,w;scanf("%d%d%d%d%d%d",&n,&m,&m1,&Q,&W,&sc);fo(i,1,n)scanf("%d",&d[0][i].v);sort(d[0]+1,d[0]+1+n,PX);s[0]=s[1]=s[2]=1;ti[0]=n;fo(i,1,m){t.v=-INF/2;fo(j,0,2)if(s[j]<=ti[j]&&t<d[j][s[j]])t=d[j][s[j]],t.n=j;s[t.n]++;t.v+=(i-t.t-1)*m1;t.t=i;if(i%sc==0)printf("%d ",t.v);q=(long double)t.v*Q/W+1e-6;w=t.v-q;t.v=q;d[1][++ti[1]]=t;t.v=w;d[2][++ti[2]]=t;}printf("\n");fo(i,1,n+m){t.v=-INF/2;fo(j,0,2)if(s[j]<=ti[j]&&t<d[j][s[j]])t=d[j][s[j]],t.n=j;s[t.n]++;t.v+=(m-t.t)*m1;if(i%sc==0)printf("%d ",t.v);}return 0;
}

【NOIP 2016 提高组】蚯蚓相关推荐

  1. NOIP 2016 提高组 初赛

    NOIP 2016 提高组 初赛 疑难点 学习 感悟. 一. 2.该题81容易看成81次按键,实际是屏幕上出现的第81个字符,实际按键次数超过81次. 3.异或,相同位上,数字相同取0,数字不同取1, ...

  2. NOIP 2016 提高组 Day 1 第二题 天天爱跑步

    题目描述 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一棵包 ...

  3. 【NOIP 2016 提高组】†换教室

    Description Solution 先用弗洛伊德求出两两点的最短路, 设DP: fi,j,0f_{i,j,0}表示当前走到了i这个点,申请了j次,在原点的期望距离, fi,j,1f_{i,j,1 ...

  4. NOIP 2015 提高组 初赛

    NOIP 2015 提高组 初赛 疑难点 学习 感悟. 一. 3. 示例如下(来自自个的理解): 101.101 十进制 转十进制1*10^2+0*10^1+1*10^0+1*10^-1+0*10^- ...

  5. #185. [NOIP2016 提高组] 蚯蚓题解

    #185. [NOIP2016 提高组] 蚯蚓题解 题目描述 本题中,我们将用符号 ⌊c⌋\lfloor c \rfloor⌊c⌋ 表示对 ccc 向下取整,例如:⌊3.0⌋=⌊3.1⌋=⌊3.9⌋= ...

  6. NOIP 2018提高组复赛C/C++试题及答案详解

    NOIP 2018提高组历年真题 CCF NOIP2018 初赛提高组 C++语言试题 第 1 页,共9 页 第二十四届全国青少年信息学奥林匹克联赛初赛 提高组 C++语言试题 竞赛时间:2018 年 ...

  7. [NOIP 2013提高组]转圈游戏 题解

    这题在洛谷上是道黄题,即[普及/提高-] 所以虽然是提高组的,但是其实挺简单的. 我们来看下题面: [NOIP 2013]转圈游戏 刚看到题面作为一个蒟蒻感觉它都不配做黄题,但是直到我看清楚了后发现它 ...

  8. NOIP 2013 提高组 货车运输

    描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多 ...

  9. NOIP 2008 提高组 复赛 message 传字条

    NOIP 2008 提高组 复赛 message 传字条 1.样例很快模拟成功,但感觉是凑出来的,没有章法. 2.深度优先遍历,但感觉容易超时. 3.动态规划?翻看他人代码,发现动态规划的写法,确实想 ...

最新文章

  1. CCAH-CCA-500-4题:Where are Hadoop task log files stored?
  2. python 包中当前目录对应的一个点号
  3. [物理学与PDEs]第2章第2节 粘性流体力学方程组 2.6 一维粘性热传导流体动力学方程组...
  4. ffplay.c学习-1-框架及数据结构
  5. wps怎么旋转页面_用WPS文字编辑一份试卷,详细教程来了,老师们赶快收藏吧
  6. 前端学习(2834):样式引入
  7. php wdatepicker,WdatePicker时间控件的使用
  8. c# 删除文件,清理删除文件
  9. webpack手动构建vue和vue-cli构建使用 px2rem-loader ,全局自动转换px单位,让自适应来的更简单点!...
  10. 2016 java排名_Java计算成绩平均值和排名
  11. Kettle笔记 —— 利用Transformation和job完成不同数据源的数据处理和写入
  12. 今天15:00 | 当AI降临教育:阳光还是风暴?
  13. Python实现批量查询手机号
  14. Linux shell脚本执行后出现语法错误: 未预期的文件结尾
  15. redis做浏览历史数据
  16. 【DKN】(四)train.py
  17. Spring框架中的Bean
  18. js的slice,splice,split的使用
  19. 块数据传输程序:将由src单元开始的20个字,转存到由dst开始的单元中(带详细注释)
  20. 美拍爬虫逆向js解析实战

热门文章

  1. 云服务器搭建配置以及服务器开发相关
  2. 【Java项目】MVC教学评价系统
  3. tomcat+eclipse +mysql搭建JSP开发环境
  4. async/await的用法
  5. 新工科数学基础 系列书籍
  6. “Terra事件”再迎新进展 加密逃犯否认躲避当局,却下落不明?
  7. 免费虚拟机软件VirtualBox快速入门
  8. C生万物 | 操作符汇总大全【庖丁解牛,精细讲解】
  9. python名字的来历_你知道Python的由来吗
  10. SSM---MyBatis