您的位置:首页 > 其它

1254 Flip and Shift

2015-10-27 00:44 218 查看
这题是目的是把黑球和白球分开连续放,事实上只要把其中一种颜色分好在一边就可以,可以绕一个球转即是第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。所以以此判定

#include<stdio.h>
#include<math.h>
int a[30];
int main()
{
int n,sum,i,ji=0,ou=0;
scanf("%d",&n);
while(n--)
{
scanf("%d",&sum);
for(i=0;i<sum;i++)
{
scanf("%d",&a[i]);
if(a[i]==0&&i%2==0)
ji++;\\判断白球在奇数位置有几个
else if(a[i]==0&&i%2!=0)
ou++;\\判断白球在偶数位置有几个
}
if(sum%2!=0||fabs(ou-ji)<=1)
printf("YES\n");
else
printf("NO\n");
}
return 0;

}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: