首页 > 其他 > 详细

hdu4101

时间:2015-07-27 00:14:25      阅读:225      评论:0      收藏:0      [点我收藏+]

 

题意:

  一个矩阵中 -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

这组数据中,橙色表注部分的为圈上石头,蓝色部分则为无用部分。

 

hdu4101

原文:http://www.cnblogs.com/takeoffyoung/p/4679002.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!