“卡常技术哪家强,中国OJ找洛谷”

  去掉两个语句之后。。。95-->100

  题目大意就不说了QWQ

  首先65分裸优先队列,线段树,堆都可以。。。

  100分:开三个队列,第一个存没被砍过的蚯蚓(要先sort),第二个存被砍了长度*p的蚯蚓,第三个存被砍了长度*(1-p)的蚯蚓。每次都从三个队列的队头找一个最大的砍掉,然后分到第二个和第三个队列中。

  怎么证明这样可以呢?其他博客有了详细的数学证明,但是我的思路很简单哇。。。假如某只蚯蚓x先被砍了,分成了两段,两段每秒都+q,等同于这只蚯蚓x每秒+2q,但是还没被砍的蚯蚓y每秒只+q,而x会比y先被砍肯定是原长度大于y,所以y砍掉之后的两条蚯蚓一定比所对应的x砍掉的两条蚯蚓要短,于是我们就能证明出三个队列都是单调的了。

  然后就是坑爹的洛谷优化环节。。。可能是我比较蠢,处理+q这个操作我开了个数组表示某条蚯蚓被砍了几次,结果这样被洛谷卡成了95QAQ。。。可能很多大爷第一眼解法都是优化后的吧,我好菜啊。。。

  优化:定义一个变量l,每次找出最长的蚯蚓长度ans+=l,砍完蚯蚓l+=q,然后砍成两段时两只蚯蚓入队要-=l,最后输出的时候所有蚯蚓长度要+=l。

  于是优化掉了我的两个入队语句就过了。。。顺便一提队列用STL只有65分QAQ

代码如下:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
const int inf=<<-;
int n,m,q,u,v,t,l,tot,num,maxj,a[][],now[],nowr[],b[];
double p;
bool cmp(int a,int b){return a>b;}
int main()
{
scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&t);p=(double)u/v;
for(int i=;i<=n;i++)scanf("%d",&a[][i]);
sort(a[]+,a[]++n,cmp);
now[]=now[]=now[]=;nowr[]=n;
for(int i=,ans=-inf;i<=m;i++,ans=-inf)
{
++num;
for(int j=;j<=;j++)
if(now[j]<=nowr[j])
if(ans<a[j][now[j]])ans=a[j][now[j]],maxj=j;
ans+=l;l+=q;now[maxj]++;a[][++nowr[]]=(int)floor(ans*p)-l;a[][++nowr[]]=(ans-(int)floor(ans*p))-l;
if(num==t)printf("%d ",ans),num=;
}
printf("\n");
num=;
for(int i=,ans=-inf;i<=n+m;i++,ans=-inf)
{
++num;
for(int j=;j<=;j++)
if(now[j]<=nowr[j])
if(ans<a[j][now[j]])ans=a[j][now[j]],maxj=j;
now[maxj]++;
if(num==t)printf("%d ",ans+l),num=;
}
}

NOIP2016Day2T2蚯蚓(队列+坑爹洛谷毁我青春)的更多相关文章

  1. 【DP】【单调队列】洛谷 P2216 [HAOI2007]理想的正方形 题解

        算是单调队列的复习吧,不是很难 题目描述 有一个$a\times b$的整数组成的矩阵,现请你从中找出一个$n\times n$的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入 ...

  2. AC日记——队列安排 洛谷 P1160

    队列安排 思路: 链表裸题: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> usi ...

  3. P1160 队列安排 洛谷

    https://www.luogu.org/problem/show?pid=1160 题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进 ...

  4. 【模板】滑动窗口最值(单调队列)/洛谷P1886

    题目链接 https://www.luogu.com.cn/problem/P1886 题目大意 有一个长为 \(n\) 的序列 \(a\) ,以及一个大小为 \(k\) 的窗口.现在这个从左边开始向 ...

  5. 【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)

    Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮 ...

  6. 洛谷P2827 蚯蚓 题解

    洛谷P2827 蚯蚓 题解 题目描述 本题中,我们将用符号 ⌊c⌋ 表示对 c 向下取整. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现 ...

  7. 【题解】洛谷P2827 [NOIP2016TG] 蚯蚓(优先队列)

    题目来源:洛谷P2827 思路 阅读理解题 一开始以为是裸的优先队列而已 但是发现维护一个切开并且其他的要分别加上一个值很不方便 而且如果直接用优先队列会TLE3到4个点 自测85分 所以我们需要发现 ...

  8. 洛谷P3222 [HNOI2012]射箭(计算几何,半平面交,双端队列)

    洛谷题目传送门 设抛物线方程为\(y=ax^2+bx(a<0,b>0)\),我们想要求出一组\(a,b\)使得它尽可能满足更多的要求.这个显然可以二分答案. 如何check当前的\(mid ...

  9. 【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】

    (是时候为五一培训准备真正的技术了qwq) part1  队列(FIFO) 算法简介: FIFO:First In First Out(先进先出) 队列是限定在一端进行插入,另一端进行删除的特殊线性表 ...

随机推荐

  1. 「Python」conda与pip升级所有的包

    conda: conda update --a pip: pip freeze --local | grep -v '^-e' | cut -d = -f 1 | xargs -n1 sudo pip ...

  2. 「日常训练」School Marks(Codeforces Round 301 Div.2 B)

    题意与分析(CodeForces 540B) 题意大概是这样的,有一个考试鬼才能够随心所欲的控制自己的考试分数,但是有两个限制,第一总分不能超过一个数,不然就会被班里学生群嘲:第二分数的中位数(科目数 ...

  3. 安装SQLSEVER与MySQL

    昨天装了一整填的SQLSEVER,今天是把昨天遗留的问题给重新整合一下,上午安装MySQL的时候,是在网上找的帖子通过压缩包安装的,捣鼓了一上午,下午花不到一个小时, 去安装好了,我觉得通过压缩包安装 ...

  4. Response对象及常用方法

    void addCookie(Cookie cookie)给客户端添加一个Cookie对象,以保存客户端的信息 void addDateHeader(String name,long value) 添 ...

  5. Windows10安装GPU版本的Tensorflow

    本人电脑配置(公司的)gtx1080ti,下载的的cuda8.0,cudnn6.0,python3.5.3安装完成后,安装tensorflow 1.pip install tensorflow-gpu ...

  6. 完全背包问题 :背包dp

    题目描述: 有 N种物品和一个容量是 V 的背包,每种物品都有无限件可用.第 i 种物品的体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大.输出最 ...

  7. codeforces 303C. Minimum Modular(数论+暴力+剪枝+贪心)

    You have been given n distinct integers a1, a2, ..., an. You can remove at most k of them. Find the ...

  8. Linux 应用笔记

    Linux 应用笔记 Linux 应用笔记 小书匠 Raspberry Pi 常用命令 CentOs Raspberry Ubuntu python 实用教程 Vim 权限问题 内存分配 shell ...

  9. android仿win8

    在 eoe上偶然发现已经有人实现了这个功能的源码(地址:http://www.eoeandroid.com /forum.php?mod=viewthread&tid=327557),马上下载 ...

  10. Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset Trie

    题目链接: http://codeforces.com/contest/706/problem/D D. Vasiliy's Multiset time limit per test:4 second ...