这几主要是做状压dp的题,首先是Long Dominoes,题意是给出1*3的小矩形,求覆盖m*n的矩阵的最多的不同的方法数。每个格子有三种状态0,1,2,横放或者竖放的第三个格子对下层没有影响,1----竖放的中间那个格子 对下一层有影响,2----竖放的第一个格子,对下两层有影响。用dp[i][j]表示到第i层状态为j的方法数。然后是pieces这道题,题意是给一个字符串,长度<=16,每次去掉一个回文串,可以中不连续的,问最少用多少次把所给的串都去掉。用dp[i]表示i状态表示的字符串是否是回文的。 对每个状态,枚举除掉是回文串的子状态进行更新。然后是LianLianKan,题意是给出一个序列,其中距离不超过6的两个相同的数字可以消除掉,现在问把能消除的全部消除之后序列中是不是还有数字,有的话输出0,没有的话输出1,这道题并没有用状压dp,直接模拟的惭愧惭愧。然后就是可爱的郑厂长系列故事――排兵布阵,先给出曼哈顿距离的定义:两个点的坐标为(x1,y1),(x2,y2),两点的曼哈顿距离为|x1-x2|+|y1-y2|,这个题题意是要求是两个士兵的距离不能是曼哈顿距离为2,意思就是这个点在同一行同一列不能相间,这个点的左上,左下,右上,右下角不能有,用dp[i][j][k]定义的状态为i是当前行,j为当前行的状态,k为上一行的状态类似炮兵阵地,还有要注意判断的时候会有溢出,需要特殊处理。最后看的是 Card Collector这道题,题意是有N(1<=N<=20)张卡片,每包中含有这些卡片的概率为p1,p2,````pN.每包至多一张卡片,可能没有卡片。求需要买多少包才能拿到所以的N张卡片,求次数的期望。dp[i] 表示买到卡片的状态为i时,买齐卡片所需要的期望值。