摘要:
dp[i][j]表示长度i末尾为S[j]的方案数 dp[1][0...m-1]=1 dp[i][j]=∑dp[i-1][k] (|S[k]-S[j]|<=2) 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 using nam 阅读全文
摘要:
一个经典的构图:对格子进行黑白染色,黑白的点分别作XY部的点。 这一题的边就是可以出售的单位面积2的土地,边的端点就是这个土地占用的X部和Y部的两个点。 这样就建好二分图,要求最多土地的答案显然是这个二分图的最大边独立集,也就是最大匹配。 1 #include<cstdio> 2 #include< 阅读全文
摘要:
这道题可以想到几点: 整个行程可以看作一次次的行走,每次行走都是用最短的路程从某一非空点到达另外一非空点; 两点间最少的步数是二者x和y坐标差的最大值; 返回原点这个过程,肯定是取完最后一个黄金后直接用最少的步数从这儿出发回到原点。 然后就是状压DP了: dp[u][S]:经过非空点集S后到达u点最 阅读全文
摘要:
这题感觉做法应该挺多吧,数据规模那么小。 我用DP乱搞了。。 dp0[i][j]表示字符串前i位能否组成末尾有连续j个元音字母 dp1[i][j]表示字符串前i位能否组成末尾有连续j个辅音字母 我的转移方案是尽量不要出现BAD字符串。 如果最后转移不过去那就说明一定会出现BAD字符串,如果可以转移到 阅读全文