DP优化
签到题看了半个小时;T2 没有考虑到只需要包含最优解即可,非要确定另一多余状态,只拿了部分分。
T3 只会考虑 “ 的公共祖先中含有 的概率”,不会高效计算“当二者的 恰为 时”的期望/概率与总长之和的乘积,仍然只有暴力分。
T4 无思路。
一句话(?)题解
A – 签到题
可以简单用归纳法证明,仅有所有管道中通行时间最大的会阻塞进度,是为两数据包到达终点的时间间隔。算出首个数据包到达的时间再将前者相加即可。
B – 简单题
第一反应是类似笛卡尔树一样,在区间上依次合并区域最大值并计算贡献。 似乎也在暗示这是一个区间 DP。
做法
设 表示“考虑完成区间 内所有贡献,且最大值恰好为 ”的最大权值和。转移时从小到大枚举最大值 ,枚举包含它的区间,尝试转移 ,其中 计算 ,可以由二维前缀和实现。稍加演算会发现,这样转移不会重复计算贡献。时间复杂度 。 (更多…)
CodeForces Round #755 Div.2 F / Div.1 D Serious Business
此题整整困了我一天半,耗费了好几张草稿纸。实在走投无路,翻看题解,却发现正解曾经近在咫尺。有必要稍作整理。
考虑DP。
错误转移1
这道题与清理班次(《算法竞赛进阶指南》上的一道例题)过于相似,都是“给定一些段落,选择其中一些完整覆盖,求最小花费”的形式。记上述花费为。但本题与原题不一样之处在于其起点和终点是任意给定的。我的第一反应是枚举在位置从第行转到第行,利用数据结构维护所有,在转移到第二行,解锁到达的最小代价。对于各行前缀和,我们可以利用线段树或树状数组维护。同时我们也知道可以利用数据结构优化在的时间内,计算出对于一个固定的起点,所有的值。 (更多…)
Problem D – Codeforces Round #127 (Div. 1)
多模式串匹配,是不是又是AC自动机啊?
显然,每个文本串中,模式串的排列构成的子序列的逆序对数量只和模式串有关。所以我们可以对模式串建立Trie树,每扫入一个文本串的单词就进行匹配。可以做到,K为文本串总长(虽然单个字符串的长度极小可以)。这样就构建出一个由到构建的数列。
枚举的全排列然后暴搜显然不可行。我们注意到,如果钦定一个数,只要知晓当前的排列中前位分别是哪些数,就可以立刻算出加入排列后新增的逆序对数量。则我们考虑状压DP。 (更多…)