摘要:d[u][0][1]=sum{d[v][0]}d[u][1][1]=d[u][1][0]=sum{min(d[v][0],d[v][1])}d[u][0][0]=sum{d[v][0]}-d[min][0]+d[min][1] (d[min][1]=min(d[v][1]))调了很久。。。。 看到...
阅读全文
摘要:树的最大独立集,但是要判断唯一性。有些像是dfs。另外发现std::ios::sync_with_stdio(0)不能与scanf并用! 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define pb pu...
阅读全文
摘要:区间dp,O(n^3)的算法很容易想。先递增枚举区间的长度d,再枚举起点i,再枚举切点k(i 2 #include 3 #include 4 using namespace std; 5 const int maxn=55; 6 int l,n; 7 int p[maxn]; 8 int dp[ma...
阅读全文
摘要:这道题我硬是做了两天多。dp比较好写,但是预处理很难写。自己第一次没写出来,看lrj的,结果反而越看越发愣。但还是受了点启发,改用c[i][j]来表示第一个字符串拿出前i个,第二个字符串拿出前j个时有多少种字母是已经开始了,但还没有结束。 然后又因为memset而超时了,学到的教训就是如果大部...
阅读全文
摘要:先用manacher找到以所有回文串,再暴力统计以每个字符为结尾的所有回文串,然后dp就容易了。最坏情况下是O(n^2) (之后看了一下,这题的时间发现居然是rank 4!) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #defi...
阅读全文