摘要: 基本题型 01分数规划是这样的一类问题,有一堆物品,每一个物品有一个收益ai,一个代价bi,我们要求一个方案使选择的 $$\sum_{} a[i] / \sum_{} b[i] $$ 最大(或最小) 分析 以最大为例,设x为最大值即x = Σai/Σbi,就有x Σbi = Σai Σai x Σb 阅读全文
posted @ 2019-10-23 22:41 Thomastine 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 定义dp[i][j]为a中前i个与b中前j个能匹配的最大长度 当 a[i] == b[j] 时,答案来自 dp[i 1][j 1] + 1 否则,来自dp[i 1][j]与dp[i][j 1]中较大一个 cpp for(rint i = 1;i 阅读全文
posted @ 2019-10-23 22:13 Thomastine 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 模板 CF10D 参考 "chennachuan_2004 " 阅读全文
posted @ 2019-10-23 16:47 Thomastine 阅读(295) 评论(0) 推荐(0) 编辑
摘要: O(n2) 设a[i]表示以元素re[i]结尾的最长上升子序列长度,初始都为1,最外层循环i,内层找[1,i 1]中re[j] a[i] 的来更新a[i] 练习 :求序列中某个点开头的最长上升与下降序列的和; 由于我们正反求某个点的严格单调序列答案都是一样的,可以把原序列复制一遍翻转一下接在前面求一 阅读全文
posted @ 2019-10-23 16:07 Thomastine 阅读(189) 评论(1) 推荐(0) 编辑
摘要: 带权并查集 设cnt[x]为x到本集合代表元素的路径值,在递归寻找代表元素时,如果找到就直接返回,没找到先记录下此时x的fa[x],再让fa[x]被更新,fa[x]被更新也意味着fa[x]到代表元素的cnt[fa[x]]被更新了,则此时再用cnt[fa[x]]更新cnt[x],便完成了路径更新。 核 阅读全文
posted @ 2019-10-22 22:36 Thomastine 阅读(78) 评论(0) 推荐(0) 编辑