随笔分类 -  状态压缩

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93112#overview
摘要:题目大意:在一个N*N的棋盘上放置M个国王,已知国王会攻击与它相邻的8个格子,要求放置的额国王不能相互攻击,求放置的方式有多少种。分析:用dp[row][state][nOne],表示本行状态state时候的放置国王nOne时候情况有多少种,状态转移也比较简单了.....代码如下:=========... 阅读全文
posted @ 2015-10-04 10:52 无忧望月 阅读(380) 评论(0) 推荐(0)
摘要:题目大意:有一个M*N的牧场,G(i, j) = 1表示这块地营养丰富,可以喂养牛,等于0表示贫瘠,不能喂养牛,所有的牛都讨厌与别的牛相邻,求有多少种放置牛的方式。分析:算是炮兵那个题的弱化版吧,先求出来所有的合法状态(不到500种),然后与上一行的状态匹配即可。代码如下:=============... 阅读全文
posted @ 2015-10-03 17:46 无忧望月 阅读(170) 评论(0) 推荐(0)
摘要:分析:先枚举出来所有的合法状态(当N=10的时候合法状态最多也就60种),用当前状态匹配上一行和上上一行的状态去匹配,看是否可以.....复杂度100*60*60*60,也可以接受。代码如下:======================================================... 阅读全文
posted @ 2015-10-03 17:07 无忧望月 阅读(213) 评论(0) 推荐(0)
摘要:题目大意:用 2*1 或者2*2-1的格子覆盖M*N的矩阵,有多少种覆盖方式。分析:容易知道有以下6种放置方式。然后用深搜的方法直接搞出来就行了,不过要使用两个变量来判断本位是否受影响。如果本行的放置可以影响上一行,比如(1,3,4,5,6)那么所影响的位置为0,如果没有受到影响那么就是1。代码如下... 阅读全文
posted @ 2015-10-03 12:27 无忧望月 阅读(522) 评论(0) 推荐(0)
摘要:题目大意:有一些1*2的矩形,现在用这些小矩形覆盖M*N的大矩形,不能重复覆盖,并且要覆盖完全,求有多少种覆盖方式。分析:可以使用1和0两种状态来表示这个位置有没有放置,1表示放置,0表示没有放置,可以有三种放置方式。一,竖着放。 二,不放。三,横着放。直接DFS这些情况就行了.............. 阅读全文
posted @ 2015-10-01 18:23 无忧望月 阅读(154) 评论(0) 推荐(0)
摘要:题目大意:有个人需要搬家,有N件物品,给个物品的重量是 w[i] 然后又两个车,每个车的载重量分别是C1和C2,求最少需要运输多少次才能把这些物品全部运输完毕。分析:刚开始就发现物品数不多,想着直接先枚举一辆车运输的物品,然后计算它运输这些物品需要多少次,不过后来发现复杂度有点高,另一种比较好的解法... 阅读全文
posted @ 2015-10-01 15:42 无忧望月 阅读(388) 评论(0) 推荐(0)
摘要:题目大意:貌似是一个游戏,首先给出卢布的攻击,防御,还有血量,再给出每升一级增加的攻击防御还有血量,然后又N个敌人,杀死每个敌人都会得到一些经验,求杀死完所有敌人时剩余的最大血量。分析:因为敌人比较少,最多只有20个,所以状态最多有2^20种,用dp[i]表示状态为i的时候的最大剩余血量,然后模拟战... 阅读全文
posted @ 2015-09-30 19:28 无忧望月 阅读(196) 评论(0) 推荐(0)
摘要:分析:首先想到每个钥匙的结尾有4种状态,不过题目还需要判断有三种不同的钥匙深度,所以每种深度结尾后有2^4种状态,0000->1111,不过题目还需需要有相邻的钥匙深度大于等于3,所以需要两种不同的状态表示0表示没有出现过这样的,1表示出现过,然后开一个4维的数组进行状态转移就好了dp[MAXN][... 阅读全文
posted @ 2015-09-30 16:56 无忧望月 阅读(541) 评论(0) 推荐(0)
摘要:题目大意:有一列数据,可以从最上面的开始连接下面相同的元素,然后消除,不过距离不能超过6,询问最后能不能消除完整个数列。分析:首先讨论一点最远能消除的地方,比如点的位置是x,如若想要消除x+1位置处的值,那么至少也得在x-4处开始消除,所以x后面最多能有4个被消除,也就是最多能下落4个位置,能够消除... 阅读全文
posted @ 2015-09-30 15:16 无忧望月 阅读(485) 评论(0) 推荐(0)

levels of contents