摘要:
一个不用保证边界没有颜色的做法。(但是四个角落有颜色还是不行) 只需要像图中那样,把一个贪吃蛇的形状染上色,再把读入的有颜色的格子给两个都染上色即可。 #include<bits/stdc++.h> using namespace std; #define uu unsigned #define s 阅读全文
摘要:
定理内容:对于一个二分图,如果所有左边都小于等于右边,存在完备匹配,即所有左部点都被匹配。 必要性显然。充分性可以归纳。 设左部点为$n$,$n=1$显然成立。 第一种情况,左边存在一个子集(不是全集)和右边对应的一样大,根据归纳假设,点集内部存在完美匹配。删掉这些点,如果出现了一个左边大于右边,显 阅读全文
摘要:
4次FFT 1.21s #include<bits/stdc++.h> using namespace std; #define forg(i,x) for(register int i=fir[x];i;i=nxt[i]) #define uu unsigned #define scanf a14 阅读全文
摘要:
某些题解能不能写的清楚一点啊。。 首先容易发现一个性质:每个人肯定是全速走,发生一次碰撞以后拐弯去碰另一个。然后就得到了$O(n\log V)$的做法。 可是这没有arc的b格!还需要想线性做法。 首先考虑不合法的情况。什么时候一个人往右走,一直碰不到右边的点?肯定右边的点也在往右走,右边的点的右边 阅读全文
摘要:
昨天cf的这个d,我wa了9发,我在此立博为证,没有学弟学妹能达到这个高度! 昨天的这个b,e,照着读错的题意做整场,我在此立博为证,没有学弟学妹能达到这个高度! 此外,我在此立博为证,在蓝名下分,没有学弟学妹能达到这个高度! 还有更重要的,我在此立博为证,在jf打双人语文forces,没有学弟学妹 阅读全文
摘要:
考场上连正解的第一步都没有想到,所以推出来了这个怪异的算法。 我看着这个题面,就想着把每个袋鼠表示成一个区间[bi,ai],这样当某些区间两两没有交集,就可以合并成一个大的区间。而最后没有区间能合并了,说明剩下的区间有交集。考虑枚举这个交集[l,r]。 此时我们的做法看着还是很离谱,但是仔细考虑一下 阅读全文
摘要:
本博客只是论文的一小部分。 这个应该算pam最基础的扩展了。例题hdu5394 直接暴力插入的复杂度肯定是不对的,是n^2的,我们需要优化找fail那个函数。 也就是说,我们要优化这样的操作,对于pam上的一个节点x,找到最长的前驱为c的回文后缀。 特判第一步就找到的情况。否则这个前驱字符一定在x内 阅读全文
摘要:
为啥我写的都是模板题题解啊 做这个题必须得想到一点,在三个点lca的地方统计答案。我考试一直想的枚举中心点就是白忙活。 像这种题就得耐心把式子列出来,写出来也不多。为什么某题解用的普通dsu误导人啊,不用长剖写这题的都是毒瘤。 #include<bits/stdc++.h> using namesp 阅读全文
摘要:
补一年前的坑。 有向图强连通分量 inline void tarjan(int x){ dfn[x]=low[x]=++dt,sta[++tp]=x,ins[x]=1; forg(i,x) if(!dfn[to[i]])tarjan(to[i]),low[x]=min(low[x],low[to[i 阅读全文