hdu4101

题意:

  一个矩阵中 -1代表宝藏,0代表通路,其他正整数代表石头。两个人轮流采取操作:从矩阵外面任何地方进如矩阵,对可以到达的石头进行一次攻击,石头将掉一血,若石头掉为0血,则此处变为通路。问必胜方

解决:

  设有某一圈石头围在-1周围,且这一圈中每一个石头都只有1的血量,圈外无其他石头。则这一圈石头出现的时候,当前局面为必败态。此时先手的人只能选择这全是石头中的一个进行攻击,后手则可直接取得宝藏。找出这圈石头的过程中有几个trick,也有些技巧。先从-1开始dfs一次,将可到达的石头标记一次,再从矩阵外面向内dfs一次,如果碰到之前被标记过的石头,再标记一次。最终被标记了两次的石头就是上述的“圈”上的石头。并在dfs过程中,记录圈外石头总血量,以及每个圈上石头(血量-1)。结果就是必败态出现之前的可操作次数。若为偶数,先手必败,否则,先手必胜。

  对了,注意如果-1直接和矩阵外联通,则先手即胜。

其中小trick的样例

0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 0 0
0 1 0 0 1 0 1 0 0
1 0 0 1 1 0 1 0 0
1 0 0 0 0 0 1 0 0
1 0 0 0-1 0 1 0 0
1 0 0 0 0 0 1 1 0
1 1 0 0 0 0 0 1 0
0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0

这组数据中,橙色表注部分的为圈上石头,蓝色部分则为无用部分。
时间: 2024-10-06 07:30:48

hdu4101的相关文章

HDU4101 Ali and Baba (bfs+dfs+博弈)

题意: Ali 和Baba玩游戏,游戏是在给出的一个n*m的图中,有且仅有一个宝藏(-1)表示,图中其他位置可能是空地(0表示),也可能是石头(石头的HP用一个正数表示).二人轮流,每次游戏开始都是Ali先手,选手可以攻击石头,每次可以让石头HP减少一.问Ali是否可以胜利. 开始时,直接BFS 宝藏能扩展的最大的面积,因为面对都是1包围的-1 ,这个是必败态.但是WA了:然后想了很久,想到,可能存在宝藏所形成的连通的块是个环形,把其他的石头包围在里面,这样,这些石头就等于是没用的了.所以不得不

hdu&&poj搜索题题号

搜索 hdu1067 哈希 hdu1401 双向搜索 hdu1430 哈希 hdu1667 跌搜+启发式函数 hdu1685 启发式搜索 hdu1813 启发式搜索 hdu1885 状态压缩搜索 hdu2918 哈希 hdu2931 dfs+dfs hdu2977 bfs+dfs hdu3004 车马炮 hdu3085 双向bfs hdu3900 哈希 hdu4012 状态压缩搜索 hdu4634 状态压缩搜索 poj1324 状态压缩 poj2044 状态压缩 poj3131 双向搜索 poj

[合集]国庆休闲补题

Hrbust - 1846 题意:序列每个格子允许放O和X,求长度为n的序列中至少存放m个连续的O的方案数 容斥+dp 设\(dp[i]\)为长度为\(i\)时的合法方案数 转移的个数来自于上一个状态的合法序列后面接上O和X,既\(dp[i-1]*2\) 也有可能来自于本来不合法的方案,转移后就合法了,那先固定一部分状态,因为转移后才合法,所以假定序列中[i-m+1,i]全部为O,那么前面就可以为所欲为,有\(2^{i-m}\)个状态,但\(2^{i-m}\)中会有合法方案的存在,因此需要减去已