首页 > 其他 > 详细

1254 Flip and Shift

时间:2015-10-27 01:37:48      阅读:228      评论:0      收藏:0      [点我收藏+]

这题是目的是把黑球和白球分开连续放,事实上只要把其中一种颜色分好在一边就可以,可以绕一个球转即是第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

 

1254 Flip and Shift

原文:http://www.cnblogs.com/scau-zk/p/4912966.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!