摘要:
"Magic Door" 题目大意: 给一个地图,有障碍0,空地1,规定任意两头奶牛不能相邻且不能在障碍上面,问有多少种方法(一个都不放也算)。 题目分析 状态压缩: 首先将地图的每一行处理成用二进制表示Map[]。然后初始化每一行可能的情况(无用状态太多)存入State[]. dp[i][S]表示 阅读全文
摘要:
"Magic Door" 题目大意: WING四个字符都分别可以用若干个两个字符(只可能是WING)表示,给一个只含有WING四种字符的字符串,问给定的字符串可能最初是由WING哪些字符演变而来,按照WING输出。 题目分析 区间dp: dp[i][j][t]表示达到i~j 是否能缩成t(W对应0, 阅读全文
摘要:
"Magic Door" 题目大意: 给一个字符串,问需要至少覆盖多少次。 题目分析 区间dp: dp[i][j]表示达到i~j这个状态的最少覆盖次数,分两种情况: s[i] == s[j]: 此时内层可能仍然相等或不相等,则 $$dp[i][j] = min(dp[i + 1][j], dp[i] 阅读全文
摘要:
"Magic Door" 题目大意: 有n匹狼, 每个狼有属性值a和b, 要想杀死一匹狼需要付出该狼的a以及左右相邻的b(若没有则不加),问杀死所有狼的最小代价。 题目分析 区间dp: dp[i][j]表示杀死i~j的最小代价, 枚举最后杀死的一匹狼则有 $$dp[i][j] = min\{dp[i 阅读全文
摘要:
"Magic Door" 题目大意: 给一个字符串,可以将重复的串缩成x(a),表示x个a,求能缩成的最小长度。 题目分析 区间dp: dp[i][j]表示i~j处理后的最小长度, 则有 $$dp[i][j] = min\{dp[i][k] + dp[k + 1][j] (i using names 阅读全文