摘要: "题目链接 $Click$ $Here$" 二分图最大独立集。对任意两个可以相互攻击的点,我们可以选其中一个。对于不会互相攻击的,可以全部选中。所以我们只需要求出最大匹配,根据定理,二分图最大独立集等于点数减去最大匹配,就得到了答案。 cpp include using namespace std; 阅读全文
posted @ 2019-03-05 20:27 maomao9173 阅读(146) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 这题的写法非常巧妙。 每个位置的点向它的下一个位置连一个容量为$INF$的边,从区间的左端点往右端点拉一条容量为$1$,费用为区间长度的边,从起点向点$1$连一条容量为$k$的边,限制只能流$k$次。这个建模的巧妙之处就在,它并没有明面上限制某个点最多经过 阅读全文
posted @ 2019-03-05 17:16 maomao9173 阅读(195) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 本题$AC$自动机写法的正解之一是$Fail$树上跑$DP$。 $AC$自动机是$Trie$树和$Fail$树共存的结构,前者可以方便地处理前缀问题,而在后者中,一个节点的子节点, 代表以当前字符串为后缀的所有字符串节点 (根节点外向$Fail$树)。我们 阅读全文
posted @ 2019-03-04 08:17 maomao9173 阅读(92) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 其实是看后缀数组资料看到这个题目的,但是一眼反应显然后缀自动机,每次维护添加节点后的答案贡献即可,唯一不友好的一点是需要平衡树维护,这里因为复杂度不卡而且也不需要用到$ch$数组的遍历访问,我采用了$map$的写法。 其实是因为不会平衡树维护啦,如果有机会 阅读全文
posted @ 2019-03-03 23:21 maomao9173 阅读(82) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 设一个串$s$在$A$中出现$cnt[s][1]$次,在$B$中出现$cnt[s][2]$次,我们要求的就是: $$\sum cnt[s][1] cnt[s][2]$$ 在$SAM$这种把多个串用一个点表示的东西里,答案就变成了这个 $$\sum cnt[ 阅读全文
posted @ 2019-03-01 22:47 maomao9173 阅读(118) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 看到其他人都是用费用流写的,我只能表示:动什么脑子?暴力就完事了! 嗯,这个题应该是一个相当显然的上下界最小费用可行流模型,所以跑就完事了。 $s inn (i)$ $f = INF$ $w = buy$ 新买 $out (i) inn (i + fast 阅读全文
posted @ 2019-03-01 22:39 maomao9173 阅读(94) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 真的是好题啊~不过在说做法之前先强调几个自己总是掉的坑点。 更新节点永远记不住往上跳$p = fa[p]$ 新建节点永远记不住$len[y] = len[p] + 1$ 总之就是各种各样的智障错误啦! 来说这个题目。这个题目厉害就厉害在,你要想到怎么用只有 阅读全文
posted @ 2019-03-01 16:08 maomao9173 阅读(254) 评论(0) 推荐(1) 编辑
摘要: "题目链接 $Click$ $Here$" 这题质量不错,就是暴力分有点足$hhhhhhhh$,整整有$95$分。 (搞得我写完暴力都不想写正解直接理解思路之后就直接水过去了$QwQ$) (啊好啦好啦水过去是我的锅啦,我自己出来挨打还不行嘛$QAQ$) 其实就是把$AABB$换成求$AA$然后组合在 阅读全文
posted @ 2019-02-28 21:23 maomao9173 阅读(144) 评论(1) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 题目大意: 重复子串不算的第$k$大子串 重复子串计入的第$k$大子串 写法:后缀自动机。 和$OI$ $Wiki$上介绍的写法不太一样,因为要同时解决两个问题。 把字符串每个前缀所在等价类的$siz$记为$1$,然后在$parent$ $tree$上跑一 阅读全文
posted @ 2019-02-28 19:30 maomao9173 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 无论再来多少次也不可能想到的写法。 二分一个最小的顶端值$k$,大于设为$1$小于等于设为$0$,可以~~证~~猜出来(你跟我说这可以?)如果存在两个连在一起的0/1那么它们会一直往上跑,还可以很容易就想到(容易?????)如果不存在相邻的情况(也就是交叉的那种)那么顶端答案一定是原先左右两边的值之 阅读全文
posted @ 2019-02-28 16:43 maomao9173 阅读(148) 评论(0) 推荐(0) 编辑