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 }

 

posted @ 2012-12-12 17:36  zhsl  阅读(417)  评论(0编辑  收藏  举报