摘要: 这也是一道巴什博弈;这题如果你是先手,考虑你的必胜态。注意,因为任何正整数都能写成若干个2的整数次方幂之和。由于规定只能取2的某个整数次方幂,只要你留给对手的牌数为3的倍数时,那么你就必赢,因为留下3的倍数时,对手有两种情况:1:如果轮到对方抓牌时只剩3张牌,对方要么取1张,要么取2张,剩下的你全取走,win! 2:如果轮到对方抓牌时还剩3*k张牌,对手不管取多少,剩下的牌数是3*x+1或者3*x+2。轮到你时,你又可以构造一个3的倍数。 所以无论哪种情况,当你留给对手为3*k的时候,你是必胜的。题目说Kiki先抓牌,那么当牌数为3的倍数时,Kiki就输了。否则Kiki就能利用先手优势将留给对 阅读全文
posted @ 2012-04-17 23:40 wutaoKeen 阅读(634) 评论(0) 推荐(0)
摘要: View Code 1 #include<stdio.h> 2 int main( ) 3 { 4 int Case , n , m; 5 scanf("%d" ,&Case ); 6 while( Case-- ) 7 { 8 scanf( "%d%d",&n,&m ); 9 if( n%( m + 1 )==0 )10 puts( "second" );11 else puts( "first" );12 } 13 return 0; 14 }这是一道简单的巴什博弈;所谓巴什 阅读全文
posted @ 2012-04-17 23:25 wutaoKeen 阅读(282) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=2420这个题是一道模拟退火题,但我用的是最小覆盖圆解决的;这是我认为写得比较好的文章,在这里与大家分享。这道题其实就是求一个最小外接圆圆心和半径。所求点即是圆心,距离就是半径。点集的最小外接圆,其实就是点集的最小圆覆盖,就是找一个最小的圆,将所有点覆盖掉。这道题的题意是求一个点,使得到点集的最远点距离最近,下边我用我的方式,不严谨的证明一下。先证明最小外接圆的圆心到其最远的点距离最近。可知最小外接圆上最少有两个点,如果是两个点,必然在一条直径上,否则就至少有三个点,且这三个点之间相对于圆心的夹角两两不超过180度。这点很好证明。如果不满足上 阅读全文
posted @ 2012-04-17 20:23 wutaoKeen 阅读(318) 评论(0) 推荐(0)