摘要: 问题问的是最少可以把一个字符串分成几段,使每段都是回文串。 一开始想直接区间DP,dp[i][j]表示子串[i,j]的答案,不过字符串长度1000,100W个状态,一个状态从多个状态转移来的,转移的时候要枚举,这样时间复杂度是不可行的。 然后我就想降维度了,只能线性DP,dp[i]表示子串[0,i] 阅读全文
posted @ 2016-01-14 17:32 WABoss 阅读(201) 评论(0) 推荐(0) 编辑
摘要: dp[S]表示已经消灭目标集合为S的最少射击数 dp[0]=0 dp[S]=min( dp[S'] + min( health[i] , health[i]/demage[j][i] ) ) 其中S-S'={i},j∈S' 1 #include<cstdio> 2 #include<cstring> 阅读全文
posted @ 2016-01-14 15:50 WABoss 阅读(172) 评论(0) 推荐(0) 编辑