随笔分类 - 其他--单调队列/栈
摘要:题面 "传送门" Sol 题目都说了 必然存在一种最优的买卖方案满足: 每次买进操作使用完所有的人民币; 每次卖出操作卖出所有的金券。 设$f[i]$表示第$i$天可以有的最大钱数 枚举$jb_iY_k+a_iX_k$$ 假设$k\frac{Y_j Y_k}{X_j X_k}$$ 设$K_i=\fr
阅读全文
摘要:题面 "Bzoj" Sol 暴力:$设f[i][j][k]$表示到第$i$次倾斜,当前在$(j, k)$的滑动最大距离 然后$O(n m T)$转移,$AC$了??? cpp include define RG register define IL inline define Fill(a, b)
阅读全文
摘要: 题面 "传送门" Sol 题意就是给你一棵树,有边权 求边数在$[L, U]$内的一条路径,使得边权和除以边数最大,输出这个最大值 二分答案+点分治+单调队列 二分一个答案$mid$,把所有的边权减去这个$mid$就是$check$是否有一条边数满足要求的大于等于零的路径 $bfs$求出当前每个
阅读全文
摘要:题面 "Bzoj" Sol 两个串拼在一起后求出后缀数组 然后显然的$n^2$暴力,就是直接枚举求$LCP$ 又由于扫的时候是对$height$取$min$ 那么可以用单调栈维护每一段的贡献相同的
阅读全文
摘要:题面 "Bzoj" Sol 设$f[i][j]$表示第$i$天有$j$张股票的最大收益 转移很简单辣 cpp include define RG register define IL inline define Fill(a, b) memset(a, b, sizeof(a)) using nam
阅读全文
摘要:Sol 一个很显然的暴力,设$f[i]$表示选到$i$的最优效率 每次枚举一段不与前面连续的长度小于$k$的区间转移来 cpp include define RG register define IL inline define Fill(a, b) memset(a, b, sizeof(a))
阅读全文
摘要:题面 "Luogu3242" Sol 考虑每个盘子怎样才能接到一个水果 分两种情况: 盘子的$x, y$在一条链上,那么水果的两点就要在这条链之外 不在的话,水果的两点就分别在盘子的两点的子树中 记录下每个点的$dfs$序,和这棵子树结束的$dfs$序 发现上述讨论就是相当于求水果这个点$(x, y
阅读全文
摘要:按斜率排序后画个图,用单调栈维护这个半平面交 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace s
阅读全文
摘要:斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <algorithm> # define IL inline # define RG register
阅读全文
摘要:斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <algorithm> # define IL inline # define RG register
阅读全文
摘要:斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <algorithm> # define Sqr(x) (1LL * (x) * (x)) # defi
阅读全文
摘要:斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <algorithm> # define IL inline # define RG register
阅读全文
摘要:斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <algorithm> # define Sqr(x) (1LL * (x) * (x)) # defi
阅读全文
摘要:凸包真是一个神奇的算法。。 概念 凸包,我理解为凸多边形 叉积 对于向量AB和向量BC,记向量AB*向量BC = AB * BC * sin ∠ABC,而叉积的绝对值其实就是S△ABC/2 对于平面上的一些点,我们要求凸包上所有的点,可以使用Graham算法 时间复杂度O(nlogn) 思路 先找到
阅读全文

浙公网安备 33010602011771号