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 }

 

你可能感兴趣的:(catch)