随笔分类 -  数据结构--单调队列

摘要:$n \leq 2000000$的正数列,有一次机会把一段长度不超过$d$的数变成0,问最长的和不超过$p$的序列。 选的$d$区间一定是答案区间$[L,R]$的最大字段和。可以证明$R$往右时$L$不会往左。反证一下,假如出现了这种情况: 其中蓝色和绿色表示选中的$d$区间(绿不可能在R1左边,否 阅读全文
posted @ 2018-06-20 10:08 Blue233333 阅读(138) 评论(0) 推荐(0)
摘要:有一辆车一开始装了编号0-a的奶茶,现有m次操作,每次操作Pi在[-1,b),若Pi为一个未出现过编号的奶茶,就把他买了并装上车;若Pi为一个在车上的奶茶,则把他丢下车;否则,此次操作为捡起最早丢下去的奶茶,若没有符合要求的奶茶则忽略此次操作。对每次操作需要在线询问:操作进行后,不在车上的奶茶的最小 阅读全文
posted @ 2017-11-06 06:53 Blue233333 阅读(296) 评论(0) 推荐(0)
摘要:数轴上n<=500个站可以买东西,每个站位置Xi,库存Fi,价格Ci,运东西价格是当前运载重量的平方乘距离,求买K<=10000个东西到达点E的最小代价。 f[i,j]--到第i站不买第i站东西的最大值,转移时决策的是买上一个站的东西,f[i,j]=f(i-1,k)+(j-k)*C(i-1)+j*j 阅读全文
posted @ 2017-09-22 14:35 Blue233333 阅读(274) 评论(0) 推荐(0)
摘要:L<=1000000的土地上用长度在2*A~2*B的线段覆盖所有点,且给定n<=1000个区间,每个区间上只允许有一条线段,求最少多少线段,无解-1。 f[i]表示填前i个土地最少线段,f(i)=f(j)+1,2*A<=i-j<=2*B,用个单调队列就行。注意区间是左闭右开。 至于那些坏区间,如果某 阅读全文
posted @ 2017-09-22 14:30 Blue233333 阅读(189) 评论(0) 推荐(0)
摘要:n<=200000个点,m<=100000个区间,每个区间有且仅有一个点,求最多几个点,无解-1。 http://www.cnblogs.com/Chorolop/p/7570191.html WA了两次:看成最少几个点;判无解是<0而不一定=-inf。 1 #include<stdio.h> 2 阅读全文
posted @ 2017-09-21 20:44 Blue233333 阅读(177) 评论(0) 推荐(0)
摘要:n<=1000000个数,每个数的选择范围在Li到Ri<=1000000000之间,求最长能得到多长的连续不下降序列。 首先可以暴力,f[i][j]表示前i个数,最后一个数取j,然后瞎转移就好了,显然过不了。 仔细一想,转移过来的状态只有几个,用{x,y}表示一个路径,最后一个数为x,答案为y。x越 阅读全文
posted @ 2017-09-17 20:59 Blue233333 阅读(296) 评论(0) 推荐(0)