【BZOJ1997】Planar(2-sat)】的更多相关文章

[BZOJ1997]Planar(2-sat) 题面 BZOJ 题解 很久没做过\(2-sat\)了 今天一见,很果断的就来切 这题不难呀 但是有个玄学问题: 平面图的性质:边数\(m\)的最大值为\(3n-6\) 然后就可以把边数减到\(O(n)\)级别... 现在好了 因为已经告诉你了一个环 那就先把环给抠出来 剩下的就相当于给你若干条边, 你可以从环里面连也可以从环外面连 判定是否可以没有交点 很熟悉的\(2-sat\)了 连边缩点,判断一下可行性 搞定 一开始边开小了,身败名裂 #inc…
[BZOJ2599]Race(点分治) 题面 BZOJ权限题,洛谷 题解 好久没写过点分治了... 在ppl的帮助下终于想起来了 orz ppl 首先回忆一下怎么求有没有正好是\(K\)的路径 维护一个表示距离的桶 对于当前重心,依次插入每棵子树的距离值 然后检查是否存在即可 显然加一步,求最短的路径数 那么,把原来的是否存在的01数组 改为记录最短路径数的一个\(int\)数组 每次插入的时候去取\(min\)就行了 #include<iostream> #include<cstdio…
[HDU4622]Reincarnation(后缀自动机) 题面 Vjudge 题意:给定一个串,每次询问l~r组成的子串的不同子串个数 题解 看到字符串的大小很小 而询问数太多 所以我们预处理任意的答案 枚举左端点,依次向右加入新节点 直接统计答案即可 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include&…
[BZOJ2882]工艺(后缀自动机) 题面 BZOJ权限题,良心洛谷 题解 还是一样的,先把串在后面接一遍 然后构建\(SAM\) 直接按照字典序输出\(n\)次就行了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #incl…
[BZOJ2882]工艺(后缀数组) 题面 BZOJ权限题,我爱良心洛谷 题解 最容易的想法: 把字符串在后面接一份 然后求后缀数组就行了... #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include<map>…
[BZOJ3277]串(后缀自动机) 题面 BZOJ 题解 广义后缀自动机??? 照着别人的打了一遍.. 相当于每个串都构建一个后缀自动机 构建完一个串之后,直接把当前的last指回root就行了??? 好吧,我觉得我看了一个假的广义后缀自动机.. 不过这道题这样就行了 考虑如何计算一个串在多少个母串中出现过? 考虑他的\(right\)集合中有多少个母串的结束位置就好了 那么,每个节点开个\(set\)存一下,然后按照拓扑序向上合并一次 因为\(parent\)包含的母串个数一定较大, 所以,…
[BZOJ3238]差异(后缀自动机) 题面 BZOJ 题解 前面的东西直接暴力算就行了 其实没必要算的正正好 为了方便的后面的计算 我们不考虑\(i,j\)的顺序问题 也就是先求出\(\sum_{i=1}^n\sum_{j=1}^n[i\neq j]len[i]\) 然后对于每个后缀树上的节点,减去一下贡献 也就是\(size[i]*(size[i]-1)*(len[i]-len[i.parent])\) 这样的话,就很容易计算了.. 我知道我写的一点都不清楚 构建出\(SAM\)后,\(pa…
[BZOJ3998]弦论(后缀自动机) 题面 BZOJ 题解 这题应该很简单 构建出\(SAM\)后 求出每个点往后还能构建出几个串 按照拓扑序\(dp\)一些就好了 然后就是第\(k\)大,随便搞一下就好 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #includ…
[SPOJ]Substrings(后缀自动机) 题面 Vjudge 题意:给定一个长度为\(len\)的串,求出长度为1~len的子串中,出现最多的出现了多少次 题解 出现次数很好处理,就是\(right/endpos\)集合的大小 那么,直接构建\(SAM\) 求出每个位置的\(right\)集合大小 直接更新每个节点的\(longest\)就行了 最后短的可以由长的更新过来就好 #include<iostream> #include<cstdio> #include<cs…
[BZOJ1146]网络管理(整体二分) 题面 良心洛谷,有BZOJ权限题 题解 要看树套树的戳这里 毕竟是:智商不够数据结构来补 所以, 我们来当一回智商够的选手 听说主席树的题目大部分都可以整体二分 这题丢进去整体二分就行了 只需要查询树上贡献的前缀和 但是,对于这种带修改的 不能够直接修改 每一个修改操作必须拆成两个: 一个删掉原来的修改,一个加入现在的修改 否则就会重复计算贡献从而\(gg\) #include<iostream> #include<cstdio> #inc…