摘要:
把这个图缩成圆方树,把方点的权值设成-1,圆点的权值设成点双的size,算 经过这个点的路径的数量*这个点的点权 的和即是答案。 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const i 阅读全文
摘要:
最小表示法就是一个字符串构成一个环,找以哪个点为开头字典序最小。 然后我们就可以用n2的算法愉快的做啦~实际上有O(n)的做法的,就是用两个指针扫,如果这两个位置的字典序相等,就一起往后,如果某一个大,就把那个指针指到大的那个的后面。 每次至少有一个指针往后移一个,复杂度就是线性的了。 (自己YY的 阅读全文
摘要:
二分答案。二分n,然后check的时候发现分类讨论一下当前值与K的关系就行了。 论认真读题的重要性。我没看见直接新建一个文件,弃置之前??? 难受 #include <iostream> #include <cstdio> #include <cstring> using namespace std 阅读全文
摘要:
ETT的模板题。 我们把欧拉序标出来, 把入栈视作+,出栈视作-。 它的子树一定是在两个欧拉序中间的。 然后把欧拉序当做一个区间维护,换父亲就把左右两端这个区间挪到它的新父亲的入栈的右边。用splay维护一下就行了。 但是!这个@#$%^&题卡数组版splay????? 但是不卡spaly???(单 阅读全文
摘要:
WA了一万次。。。。 然后发现多输出了一个空格 我#$%^& 启示我们输出字符的时候应该输出ASCII码看一下。。。。 然后本题可以用烤馍片算法,每次匹配完以后看看当前最后一位的nxt数组的值是多少,然后补齐到 lenT 。 下次匹配的时候直接从上次匹配过的最后一个开始匹配就行了。 #include 阅读全文
摘要:
区间DP,但是卡空间。 n2的就是f[i,j]=sum[i,j]-min(f[i+1][j],f[i][j-1])表示这个区间和减去对手取走的最多的。 但是空间是64MB,就很难受 发现一定是由大区间转移到小区间,区间长度差为1 式子变成 :f[i,i+len]=sum[i,i+len]-min(f 阅读全文