【题目大意】 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 【思路】 先预处理每一行可行的状态(即单行中左右没有相邻的1),存放到usable中。 然后预处理usable中两两之间能否相互转换, ...
分类:
其他好文 时间:
2016-07-05 22:23:42
阅读次数:
142
我们知道,用DP解决一个问题的时候很重要的一环就是状态的表示,一般来说,一个数组即可保存状态。但是有这样的一些题 目,它们具有DP问题的特性,但是状态中所包含的信息过多,如果要用数组来保存状态的话需要四维以上的数组。于是,我们就需要通过状态压缩来保存状态,而 使用状态压缩来保存状态的DP就叫做状态压 ...
分类:
其他好文 时间:
2016-07-05 12:23:15
阅读次数:
98
思路:考试的时候直接想出来了,又有点担心复杂度,不过还是打了,居然是直接A掉,开心啊。 我们发现,Ai<=7,这一定是很重要的条件,我们考虑状态压缩,去枚举路径中出现了哪些数字,然后我们把原来n个点拆成 我们枚举数字的最小公倍数 个,因为如果一个数模某个数等于0,那么模它的因数也一定是0,因此我们的 ...
分类:
其他好文 时间:
2016-07-01 15:57:16
阅读次数:
181
状态压缩dp。 一道很好的dp题。 我们在选的时候并不知道它会对后面的选择造成什么影响,所以不能正向dp。 f[i][s]表示第i次选择后,选择的宝物二进制为s的期望得分。 初始状态均为0,答案为f[0][0]。 #include #include #include using namespace ... ...
分类:
其他好文 时间:
2016-06-25 09:34:54
阅读次数:
91
1076: [SCOI2008]奖励关 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃)。 宝物一共有n种,系统每次抛出这n种宝物 ...
分类:
其他好文 时间:
2016-06-18 12:42:31
阅读次数:
159
tarjan,状态压缩。 首先直接暴力可过。 第一步tarjan缩强联通分量,图变成一个dag。跑一个拓扑排序。 然后倒序用一个f[i]二进制数组表示i能到达的点。 因为2000个点已知数据类型放不下,用一个bitset。 然后答案就是sum(size[u]*size[v]) f[u][v]=1,u... ...
分类:
Web程序 时间:
2016-06-17 12:31:23
阅读次数:
202
题目链接:传送门 题目大意:给你一个图,要从起点走到终点并且要吃够足够的金币才能出去,图上有金币(只能吃一次), 有传送门(用一次消耗1金币,必须有金币才能使用),问最少需要多少步才能出去。不能出去输出-1 题目思路:搜索+状态压缩技巧 ...
分类:
其他好文 时间:
2016-06-14 14:16:49
阅读次数:
184
状态压缩,记忆化搜索。 用一个5进制数来表示每堆排到了哪一个位置。和2进制是一样的,不过不能用位运算。 #include #include #include using namespace std; const int maxn = 2000000+10; double dp[maxn]; bool... ...
分类:
其他好文 时间:
2016-06-12 00:21:32
阅读次数:
117
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6630 Accepted Sub ...
分类:
其他好文 时间:
2016-05-29 18:28:09
阅读次数:
178
hash。 怎么感觉叫状态压缩bfs比较合适呢? #include #include #include using namespace std; const int maxn = 10 + 5; const int maxm = 100 + 10; const int maxg = 1024 + 1... ...
分类:
其他好文 时间:
2016-05-29 12:16:20
阅读次数:
118