1254 Flip and Shift

这题是目的是把黑球和白球分开连续放,事实上只要把其中一种颜色分好在一边就可以,可以绕一个球转即是第n个球可以放在n-2或者n+2上,因为这是个环,所以只需要把黑球或者白球连续放好就可以,当一共有奇数个球时,如:7个  x 1 0 1 0 1 0(x为任意颜色球)——x一开始是为奇位,然后开始把x向右移动。0 1 x 1 0 1 0——0 1 0 1 x 1 0——0 1 0 1 0 1 x——0 x 0 1 0 1 1(注意这是环)   到这里x到了偶数位。。所以就是说当总球数为奇时奇偶位是可以互换的。所以当总球数为奇数时,无论如何都能分好。当总球数为偶数时,任意选一种球判断,我们假如分好了,那偶数位上的黑球和奇数位上黑球个数相差最大只能为1。所以以此判定

 1 #include<stdio.h>
 2 #include<math.h>
 3 int a[30];
 4 int main()
 5 {
 6     int n,sum,i,ji=0,ou=0;
 7     scanf("%d",&n);
 8     while(n--)
 9     {
10         scanf("%d",&sum);
11         for(i=0;i<sum;i++)
12         {
13             scanf("%d",&a[i]);
14             if(a[i]==0&&i%2==0)
15                 ji++;\\判断白球在奇数位置有几个
16             else if(a[i]==0&&i%2!=0)
17                     ou++;\\判断白球在偶数位置有几个
18         }
19         if(sum%2!=0||fabs(ou-ji)<=1)
20             printf("YES\n");
21         else
22             printf("NO\n");
23     }
24     return 0;
25 
26 }
View Code

 

posted @ 2015-10-27 00:44  scau_zk  阅读(127)  评论(0)    收藏  举报