HDU-Catching the Thief 博弈
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3469
题目大意:警察抓小偷。有n个房间,编号1-n,小偷躲在其中的一个房间里面,警察每天早上会检查一个房间,如果小偷不在那个房间里面,那么小偷晚上会转向相邻的房间,问警察在最坏情况下需要多少天抓到小偷。
这个题目是分奇偶情况讨论。先假设小偷在第偶数个房间,那么警察从第2个房间依次向右找,知道第n-1个房间(n-1找两次),那么最多只要n-2天就可以了。如果没有找到,那么就可以肯定小偷最开始在第奇数个房间,若房间的个数n为偶数,那么小偷此时肯定在第奇数个房间,那么警察从第n-1个房间向左找到第2个房间就可以了。如果n为偶数,那么此时小偷在第偶数个房间,所以警察再从第2个房间到n-1依次再找一次。当n>2时,上面两种情况都是2*n-4;
1 //STATUS:G++_AC_0MS_248KB 2 #include<stdio.h> 3 int T,n; 4 int main() 5 { 6 // freopen("in.txt","r",stdin); 7 int k=0; 8 scanf("%d",&T); 9 while(T--){ 10 scanf("%d",&n); 11 printf("Case %d: ",++k); 12 if(n==1 || n==2)printf("%d\n",n); 13 else printf("%d\n",(n<<1)-4); 14 } 15 return 0; 16 }