2014年3月12日

POJ 2234 Matches Game

摘要: 题目大意:有N堆火柴,每堆火柴数告诉你,现在有两个玩家A,B,每个人每一个回合可以且仅可以在任意一堆里取出任意多根火柴(取的火柴数不能为0)最后取完所有的火柴的人胜利,现在问你先取的人是赢还是输(两个人足够聪明)分析:显然这是一道博弈论的题目。当两堆的时候不难发现,两堆数量相同(达到平衡状态),那么先取的人必输。当多堆的时候,有个平衡点,每个数对应一个二进制数(前面不足用0补上),如果N个数的个个位相加起来是偶数,那么该位是平衡位,如果所有的位都是平衡位,那么该状态为平衡状态。好了,今天有点晚了,就不详细写了,直接贴上代码(不懂的地方可以评论,我会详解的): 1 #include 2 int 阅读全文

posted @ 2014-03-12 21:22 静夜方赤 阅读(125) 评论(0) 推荐(0) 编辑

POJ 1852 Ants

摘要: 题目大意:有n个蚂蚁在一个杆长为d的杆上,他们的位置(以蚂蚁和杆的最左端的距离为标准)依次是接下来的n个数。任意的蚂蚁爬行的时候,若两个蚂蚁相遇,那么他们按照各自的反方向爬行(蚂蚁转弯的时间忽略不计),若蚂蚁爬到了最左(右)端,那么该蚂蚁掉下来。蚂蚁最初选择行走的方向不定,求所有蚂蚁都掉下来的可能的最早时间和最晚时间。分析:该问题看起来复杂,其实不然,如果光想着两只蚂蚁相遇之后的情景,那就是很复杂了,我们可以换位思考,我们要求蚂蚁都掉下来的时间,因为每个蚂蚁对我们来说都是一样的,所以就算两个蚂蚁相遇了,他们的本质对我们来说还是不变(相遇前一个向左爬行,一个向右爬行;相遇后还是一个向左爬行一个向 阅读全文

posted @ 2014-03-12 20:57 静夜方赤 阅读(544) 评论(12) 推荐(0) 编辑

POJ 1144 Network

摘要: 题目大意的本质就是给你一个图,求该图的割点个数。不过这一题的输入有点特别,以第二个例子为例:6(输入的第一个数,表示节点个数,0代表结束输入)2 1 3(第一个数代表节点(以2为例,0代表结束边的输入),第二个数到后面的所有数字代表与节点2相邻的边)(这组代表有边2-1 和2-3)5 4 6 2(同上)0(结束输入)这道题是典型的求图的割点。分析:求图的割点要用到两个函数:dfn,low.dfn[v]代表无向图中节点v的先序值(也就是DFS树中遍历的顺序,也就是v的发现时间。low[v]代表节点v及其后代所能追溯到的最早的(最先被发现)祖先点u的dfn[u]的值。求割点基于这样的事实:事实一: 阅读全文

posted @ 2014-03-12 20:20 静夜方赤 阅读(229) 评论(0) 推荐(0) 编辑

导航