![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单调队列
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
【GDOI2016模拟3.9】奇妙的数列
Description给出一个长度为n的数列b,求另一个长度为n的数列a中的最大值。其中,ai=i-k+1,k是最小的满足对于k<=j<=i,bk<=bj<=bi。 n<=10^7Solution可以发现,对于每一个i,ai是在它左边且小于等于它,且大于等于左端点的数的个数。 那我们枚举左端点。很明显合法的i存在于一段连续的大于等于它的区间中。那么我们可以找出它的右端点,然后处理处每一个位置左边原创 2016-04-11 19:45:53 · 1032 阅读 · 0 评论 -
文件修复
Description给出一个字符串S,求S有多少个出现了2次以上的字串。 |S|<=100000Solutioin又是裸题,求出SA用单调栈直接搞就好了。 用来复习SACode#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,原创 2016-04-20 19:42:48 · 493 阅读 · 0 评论 -
【GDOI2014模拟】服务器
Description我们可以从n个数中选择一些,选择第i个数的代价为Ci,且必须选择n。对于每个没有被选择的数i,若它右边离它最近的一个被选择的数是j,则代价为j-i。 求最小代价。 n<=10^6SolutionN^2Dp还是很显然的。 设Fi表示i必须选,且i的右边已经搞定了的最小代价,那么Fi=min(Fk+(k−i−1)∗(k−i)/2)+CiFi=min(Fk+(k-i-1)*(k原创 2016-06-11 18:41:25 · 619 阅读 · 1 评论 -
【GDOI2017模拟8.12】新车
Description平面上有一个数轴,e点为目标点。 你现在要开♂车从w前往e,每移动1格需要1L油。 你的油箱容量为S,初始时装满了98#汽油。 数轴上有N个加油站,每个加油站提供98#,95#,92#中的一种。 到了加油站你可以选择加任意数量的油,你的油箱是兹瓷所有油甚至混合油的。。 你认为98#最吼,95#其次,92#跑的最慢。 于是你钦点使消耗的92#最少。 如果有多种方案,原创 2016-08-13 21:49:49 · 468 阅读 · 0 评论 -
[UOJ#245][UER#7B]天路
Description给出n个数,对于每个k(2<=k<=n),求出最大的一个ans,使得存在一个连续的长度为k的区间中最大值和最小值的差为ans。 答案与标准答案的误差不超过5%即为正确 n<=10^5,ai<=10^6Solution什么鬼?UER都出近似算法了? 这还真NOIP~~ 好吧,其实这并不是什么高级的近似算法,什么不等式乱搞的东西。。。 你只需要对答案划分一下阶段。。。原创 2016-10-21 20:27:06 · 731 阅读 · 0 评论 -
[bzoj4700]适者
Description给出n个人,每个人有血量T和攻击力D。 你自己可以看做有无限血量和A的攻击力。 战斗为回合制进行,每一回合你先选择一个敌人攻击,将其血量减少你的攻击力的数值。 若一个人的血量<=0则死亡。 然后所有存活的敌人对你进行攻击,每个人对你造成D的伤害。 在战斗开始前你可以先秒杀两个敌人。 求你所受伤害的最小值。 n<=3*10^5,T,D,A<=10^4Solution原创 2017-01-18 21:14:30 · 732 阅读 · 0 评论