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 }

时间: 2024-10-11 11:06:46

1254 Flip and Shift的相关文章

zoj 1028 Flip and Shift

Flip and Shift Time Limit: 2 Seconds      Memory Limit: 65536 KB This puzzle consists of a random sequence of m black disks and n white disks on an oval-shaped track, with a turnstile capable of flipping (i.e., reversing) three consecutive disks. In

POJ 1063 Flip and Shift 最详细的解题报告

题目来源:Flip and Shift 题目大意:一个椭圆形的环形容器中有黑色和白色两种盘子,问你是否可以将黑色的盘子连续的放在一起.你可以有以下两种操作: 1.顺时针旋转所有的盘子 2.顺时针旋转3个盘子 解题思路:第一种操作表明你可以对任意一个盘子执行第二种操作,所以重点在于第二种操作.仔细分析一下会发现,第二种操作其实就是将某一个盘子当前的index加2,所以我们可以先统计一下黑色盘子的个数count,然后用一个数组将所有的盘子存起来,使数组中0-count所存放的是黑色盘子(通过下标加2

zoj 1028 Flip and Shift(数学)

Flip and Shift Time Limit: 2 Seconds      Memory Limit: 65536 KB This puzzle consists of a random sequence of m black disks and n white disks on an oval-shaped track, with a turnstile capable of flipping (i.e., reversing) three consecutive disks. In

poj 1063 Flip and Shift

题目链接 输入n个数(0或1),问是否能通过若干次交换相间的两个数字使得所有1都相邻. 解法: 当n为奇数时任意两个数字都能交换,当然是yes. 当n为偶数时相间的两数字可以互相交换,这样会出现两组排列,然后把排列a插入排列b.并且b的相邻两个元素间只能插一个a的元素.要使所有的1相邻,显然a,b中1的个数要么相等,要么相差1.因此直接判定yes或no #include <iostream> #include <cstring> #include <algorithm>

HOJ 题目分类

转自:http://blog.sina.com.cn/s/blog_65f3869301011a1o.html ******************************************************************************* 简单题(包括枚举,二分查找,(复杂)模拟,基础数据结构(栈.队列),杂题等 ****************************************************************************

POJ百道水题列表

以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations 1221 Risk1230 Legendary Pokemon1249 Pushing Boxes 1364 Machine Schedule1368 BOAT1406 Jungle Roads1411 Annive

zoj题目分类

饮水思源---zoj 转载自:http://bbs.sjtu.edu.cn/bbscon,board,ACMICPC,file,M.1084159773.A.html 注:所有不是太难的题都被归成了“简单题”,等到发现的时候已经太晚了,我太死脑筋 了……:( 有些题的程序我找不到了,555……:( SRbGa的题虽然都很经典……但是由于其中的大部分都是我看了oibh上的解题报告后做 的,所以就不写了…… 题目排列顺序没有规律……:( 按照个人感觉,最短路有的算做了DP,有的算做了图论. 有些比较

快速记忆数组栈和队列函数push()和shift()

在js中,对数组的操作是比较常见的,有时候,我们需要模拟栈和队列的特性才能实现需求,今天来给大家用通俗易懂.简洁明了的几行文字,来告诉大家栈和队列的几个函数,如何快速记住. 首先,概念还是要知道的: 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素:从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻

Visual Studio 2013 无法使用:在文件中查找(Ctrl+Shift+F)

最近遇到一个问题就是在win7(32位.64位都试过)上安装Visual Studio 2013(专业版.旗舰版都试过)之后,打开项目,使用:在文件中查找(Ctrl+Shift+F)功能时,会突然奔溃. 后来,突然想到在安装的时候,右键,以管理员身份安装. 于是,尝试了一下,搞定!