摘要:
"传送门" 题意,给一棵树,每次给两个点$x,y$,求$\max_{i=1}^{n}(\min(di_{x,i},di_{y,i}))$ ~~看std看了好久~~ 以下是一个优秀的在线做法,$O(nlogn)$预处理,每次询问可以做到$O(1)$ 首先把直径扣出来,然后就可以把整棵树看成一条直径上挂 阅读全文
摘要:
"传送门" 跟 "国王游戏" 一样的分析 考虑相邻的两个大臣,设他们前面的$\sum a_j$为$s$,同时注意到后面人的贡献更大 所以$i$在前面时,$c_j=\max(\max(c_{last},s+a_i)+b_i,s+a_i+a_j)+b_j$ $j$在前面时,$c_i=\max(\max( 阅读全文
摘要:
"传送门" 代码极短 $O(n^2)$dp是设$f_{i,j,k}$表示前$i$位,放了$j$个1,后面还可以接着放$k$个0的方案,转移的话,如果放0,$k$就要减1,反之放了1,后面可以多放一个0,所以$k$加1,即$$f_{i+1,j,k 1}+=f_{i,j,k}$$$$f_{i+1,j+1 阅读全文
摘要:
"传送门" 因为一个木板可以切掉最多$m$,所以可以先预处理哪些长度的木板可用,开个桶,然后对$[l m,l]$打标记,再把打了标记的数取出来 假设可用长度$a_1,a_2,,,a_n$从小到大排好了序,我们可以先不用$a_1$,只用后面的长度拼,然后用$a_1$凑,所以设$di_i$为能用后面的凑 阅读全文
摘要:
"传送门" 单串匹配显然用$kmp$ 一个暴力的dp是设$f_{i,j}$,表示前$i$位, 正在匹配 给定串第$j$位的方案,转移就枚举下一位放什么,然后使用$kmp$看会匹配到给定串的哪位 但是$n$非常大,注意到$f_{i,j} f_{i+1,k}$这样的转移可以抽象为一条从$j$到$k$的边 阅读全文
摘要:
"传送门" 异或最大值应该是要用$trie$树,从高位往低位贪心,虽然这里询问区间的数都要加上$x$,但是仍然可以利用这个思想 从高往低位考虑,我们要找一个加上$x$后当前二进制位$j$不等于$b$的当前位的数,假设$b$当前位为0,我们就要现在找个数加上$x$后当前位$j$为1,记之前选出的数为$ 阅读全文
摘要:
"传送门" ~~编号好评~~ 先把所有数记个前缀和,然后对于某一个右端点$r(r\geq L)$,能计入答案的$l$的范围为$[\max(r R,0),r L]$ 可以开一个大根堆,先对于所有右端点$r$,加入$pre_r \min(pre_{l})$,然后每次取出堆顶加入答案,弹掉堆顶,同时如果这 阅读全文
摘要:
"传送门" 题目中给的信息很难直接维护,但是可以考虑一条边对答案的贡献 在以$x$为根的子树里,如果一条边$i$的权值为$w_i$,这条边深度更深的端点为$to_i$,那么这条边对这个子树的贡献为$w_i size_x (size_x size_{to_i})$,也就是这条边会被计算边两端点个数之积 阅读全文
摘要:
"传送门" 题意是选出两条从左往右的中间点不能重复选的路径,并使得经过的所有点数最大 可以考虑最大费用最大流,即把所有点拆点,入点向出点中间连容量为1,费用为1的边,然后按照题目中的关系把左边点的出点和右边点的入点连容量为1,费用为0的边(起点和终点的中间边容量为2);源点到起点,终点到汇点连容量为 阅读全文
摘要:
"传送门" 一个人推箱子,和之前的 "华容道" 中的棋子移动有~~异曲同工之妙~~,因为每次可以让人走到箱子的其他方向上,或者推一下箱子 所以状态可以设成$f_{i,j,k}$,即箱子在$(i,j)$,人在$k$方向的状态是否存在,一开始也要把人移到箱子旁边作为初始状态,然后每次移动人到箱子其他方位 阅读全文