随笔分类 - 题解
小蒟蒻的一些见解。
摘要:Description 传送门 Solution 观察性质,发现最优解下对于目标串中的每个位置都可以找一个初始串的位置匹配,并且匹配确定后最短操作次数一定。 这样我们考虑以匹配为状态$dp$求出最少操作次数,设$dp_{i ,j}$表示目标串最后$i$个位置,已经和初始串中$[j, l]\(区间内匹
阅读全文
摘要:Description 传送门 Solution 首先每一位上有$0$就不合法,然后很多不同的排列乘起来是相同的,所以盲猜最后的$f$函数有用的值不多。 经过搜索发现最多只有不到$10000$个。 为啥别的题解都是8282我搜出来是9200? 那就把这些合法的$f$函数值都放进哈希表存起来,然后设$
阅读全文
摘要:Description 传送门 Solution 因为只要经过就会修所以最优的修缮策略是从起点开始往左或往右修一段区间,所以考虑反向区间$dp$。 设$dp_{i, j}\(表示修缮完区间\)[i, j]$后的时间内再修其它区间产生的花费。 那么转移时不需要考虑区间$[i, j]\(,只需要考虑除了
阅读全文
摘要:Description 传送门 Solution 考虑对于每个点处理它的所有儿子,它的所有儿子连上来的路径要不就是在当前子树内两两匹配,要不就是继续连到该点的父亲。 如果在子树内匹配,儿子两个儿子的石子数量减一,该节点的石子数量减一;对于连上去的,某个儿子的石子数量减一,该节点的石子数量减一。 所以
阅读全文
摘要:Description 传送门 Solution 要求字典序最小,那么把原字符串中最小的移到开头一定是最优的。 同时为了使字典序尽量小,我们要使字符串中开头最小的字符串的数量尽可能的多且连续,由于是把字符串的反串放到字符后面,那我们先把最小的字符移动到字符串结尾,然后截取若干段最小字符和前面的一些字
阅读全文
摘要:Description 传送门 Solution 考虑朴素的$2-SAT$,开点记录某个人是不是犯人,每句话是不是真的,然后每个人所说的所有话之间都要连边为保证只有一句假话。这样边数会很大,复杂度会假。 用前缀和的思想优化该做法,$pre_{i, j}$表示$i$的前$j$句话有没有出现假话。 那么
阅读全文
摘要:Description 传送门 Solution 非常妙的一道题。 首先题目中的判定条件“走到拥有关键点的环”是一个不好判定的条件,那么考虑将问题转化变为好判定的。 将原来的操作“保留一条边其它边全部删除”变为“选择一条边走出去”,同时,将获胜条件从“走到拥有关键点的环”变为“可以无限次经过关键点”
阅读全文
摘要:Description 传送门 Solution 首先容易想到要把询问离线掉,按照套路枚举右端点$r$,$ans_i$表示$[i, r]$的答案。 这样我们只需要考虑每次加进来一个点$a_r$对所有答案的贡献。 以$a_r$将点分为两种:权值大于它的和小于它的。 因为两种是对称的所以只讨论权值大于它
阅读全文
摘要:Description 传送门 Solution 首先每个连通块之间是独立的,也就是说算出每个连通块的$sg$值异或起来就行。 那么每个连通块单独考虑,进行一次题目中的操作后,会产生一些新的连通块,假设当前节点为$x$,它能到达的所有点的$sg$值都已经算出来了,那么如果选择的是$x$,下一个状态的
阅读全文
摘要:\(About\) 感觉做题思维很差,很多题算法都会但就是想不到(捂脸。 滚来做$CF$题锻炼思维力。 \(Codeforces\ Round\ \#665\ (Div.\ 2)\) \(A\) 分两种情况讨论。 若$k >= n$,那么将$A$移动到$(k, 0)$为最优。 若$k < n$,解方
阅读全文
摘要:Description 传送门 Solution 每次选择花费最大的地方切,然后按照题意$O(n)$模拟即可。 证明如下: $1.$若两次切割都是横向或竖向,且花费小的比花费大的先切割。 设花费小的切割的时候需要切割$a$次,花费大的切割的时候需要切割$b$次,因为中间可能切割了任意次另外一个方向,
阅读全文
摘要:Description 传送门 Solution 其实这题是没有必要使用可持久化$Trie$的。 首先建立一颗线段树,每个节点维护它所代表的那些商店的商品的标价所构成的$Trie$。 这样如果没有时间上的限制,我们可以将每次的询问拆成对于$log(n)$个线段树上的节点的询问,每次在$Trie$上花
阅读全文
摘要:Description 传送门 Solution 注意到$DFS$的时候每次选择一个$DFS$树的子树后必然会走所有子树中的节点,所以原问题变成所有子树内的顺序乘子树外的顺序。 这样可以将还没有经过的节点状压,进行记忆化搜索。$DFS$树的子树个数就是去掉当前点之后的连通块个数,用并查集维护即可。
阅读全文
摘要:Description 传送门 Solution 设点$i$到根的第一条边的颜色为$col_i$,根到点$i$的路径上的颜色和是$sum_i$,经过观察发现$col_i$相同的不在同一个子树里的两个点之间的简单路径拼接后的答案是$sum_i + sum_j - w_$。这是因为中间的一段会被重复算两
阅读全文
摘要:Description 传送门 Solution 动态加入字符就用$SAM$,发现答案就是一个点的子树的$siz$之和,所以需要动态维护子树和,上$LCT$。 $lCT$上每个节点,$siz$表示$Splay$上大小,$lsiz$表示虚子树大小,修改$Update$、\(Access\)、$Link
阅读全文
摘要:Description 传送门 Solution 如果直接暴力的话,可以枚举那个不同的字符在串一和串二里的位置分别是什么,然后算一下他们的$lcp$和$lcs$来更新答案,也就是$\sum_ ^{i ⇐ n, j ⇐ m} lcp(i + 1, j + 1) + lcs(i - 1, j - 1)
阅读全文
摘要:Description 传送门 Solution 读完题面之后我们首先可以想到要进行质因数分解。 因为每次只能除以$prime^z$也就是说每次我们只能消除某一个质因子多出来的部分,所以对于每个质因子可以分开考虑。 消去某个质因子多出来的部分只需要把这个质因子所有出现过的在每个数中的次数都记录下来,
阅读全文
摘要:Description 传送门 Solution 对于每种原料,如果我们能求出它们的期望出现时间,那么第$k$小的期望出现时间就是答案。因为在第$k$小的原料被收集之前,比它更早出现的原料已经被收集过了,第$k$小的原料就是第$k$个被收集到的原料。 第$k$小的原料其实就是第$n-k+1$大的原料
阅读全文
摘要:Description 传送门 Solution 首先如果士兵只能给一行或一列造成贡献的答案是$\sum_^m l_i + \sum_^n c_i$。 但是发现有的士兵可以同时给一列和一行造成贡献。 那就算出这些士兵的个数就行了。 $S$向每一行连容量为$l_i$的有向边;每一列向$T$连容量为$c
阅读全文
摘要:Description 传送门 Solution 经典的最大权闭合子图问题。 首先$S$向每个中转站连容量为费用的有向边。 每个群体向$T$连容量为收益的有向边。 如果一个中转站的点被割了,那么相当于建立这个中转站;如果一个群体被割了相当于不选这个群体。 那么答案就是所有群体的利益减去最小割。 由于
阅读全文

浙公网安备 33010602011771号