这是百度之星2011初赛B中的第一道题,题目也很水,只要找到解题思路就OK了。。

题目:

时间限制:1000ms
描述
一个圆环上有n个位置,这n个位置按顺时针依次标号为1, 2, …, n。初始时圆环的每个位置上都有一个1至n之间的整数,且每个整数只出现一次。
任何时刻,你可以将圆环上的数全部逆时针旋转一个位置,即第i个位置上的数变为原来第i + 1个位置上的数,第n个位置上的数变为原来第1个位置上的数。也可以将圆环上的数全部顺时针旋转一个位置,即第i个位置上的数变为原来第i – 1个位置上的数,第1个位置上的数变为原来第n个位置上的数。另有一个装置,可以交换圆环上第a个位置和第b个位置上的数。
下图给出了三种操作的示例,圆环上有6个位置,初始数字分别为1, 2, 4, 3, 5, 6,能交换第2个和第3个位置上的数。经过一次逆时针旋转后变为2, 4, 3, 5, 6, 1,交换后变为2, 3, 4, 5, 6, 1,再经过一次顺时针旋转后变为1, 2, 3, 4, 5, 6。

 
请问通过旋转和交换,能否使得第i个位置上的数正好是i
 

输入
输入包含多组数据。
每组数据的第一行包含一个整数n,表示圆环上的数字个数。
第二行包含两个整数a, b(1 ≤ a < b n),表示可以交换圆环上第a个位置和第b个位置上的数。
接下来n行描述圆环上每个位置的初始值,其中第i行包含一个整数ai,表示初始时刻第i个位置上的数。
最后一组数据之后的一行为一个0,表示输入结束。

输出
对于每个测试用例,输出一行,如果能满足要求,这行中应只包含一个单词Yes,如果不能满足要求,这行中应只包含一个单词No
样例输入
6
2 3
1
2
4
3
5
6
4
1 3
1
2
4
3
0

样例输出
Yes
No

提示
对于100%的数据,1 ≤ n ≤ 1,000

解法思路:

首先我们定义“连通”的概念:如果在圆环中的位置可以互换,则我们认为这两个数是连通的。。。我们可以找到一个连通的一串数,则这串数中任意两个数是可以互换的。(why?自己证明把,很简单!)首先我们对每个数,找到他所属于的连通分支,然后从小到大进行排序。。。最后如果这些数能够组成连续的自然数,我们就认为这个圆环通过旋转和交换,能够使i的位置上的数是i。。

如图:

代码实现起来很容易,其实我也没写,希望有时间的同学可以写下。。。

转载于:https://blog.51cto.com/canghailongteng/877986

2011百度之星初赛B圆环相关推荐

  1. 二分搜索 2015百度之星初赛1 HDOJ 5248 序列变换

    题目传送门 1 /* 2 二分搜索:在0-1e6的范围找到最小的max (ai - bi),也就是使得p + 1 <= a[i] + c or a[i] - c 3 比赛时以为是贪心,榨干智商也 ...

  2. 2016百度之星 - 初赛(Astar Round2B)解题报告

    此文章可以使用目录功能哟↑(点击上方[+]) 被自己蠢哭,去年还能进一下复赛,今年复赛都没戏了... 链接→2016"百度之星" - 初赛(Astar Round2B)  Prob ...

  3. 2015百度之星初赛(1)1006 旋转卡壳

    矩形面积 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. 2021百度之星初赛二(1001 -- 1003)

    2021百度之星初赛二(1001 – 1003) 1001 题意: 给 a,b,每次 a,b会变为 a+b,a-b,问 k 次之后变成了哪两个数,对 998244353998244353 取模,多组数 ...

  5. 2016百度之星 - 初赛(Astar Round2A)解题报告

    此文章可以使用目录功能哟↑(点击上方[+]) 有点智商捉急,第一题卡了好久,看来不服老,不服笨是不行的了...以下是本人目前的题解,有什么疑问欢迎提出 链接→2016"百度之星" ...

  6. 2021百度之星初赛第一场部分题解

    写在前面 几个家长要求我写一些2021百度之星初赛第一场的题解. 1003 鸽子 原题链接 https://acm.hdu.edu.cn/showproblem.php?pid=6998 http:/ ...

  7. 百度之星初赛(1)解题报告

    超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. 2015Astar百度之星初赛 1005 序列变化

    序列变换 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  9. 2015Astar百度之星初赛 1001 超级赛亚ACMer

    超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

最新文章

  1. html如何扩大div,HTML – 如何让绝对div适合父宽度/填充?
  2. Stanford UFLDL教程 白化
  3. Ubuntu 18.04 安装 MySQL 5.7【解决普通用户登录、密码修改、远程访问等问题】
  4. HDU3634(矩形切割)
  5. PYPL 7月榜单公布:Java份额出现下降趋势
  6. 十一、加权线性回归案例:预测鲍鱼的年龄
  7. 表单校验---struts2
  8. 铠侠 RC10 固态硬盘寿命暴力写入测试:1100pe 毫发无损
  9. Velox将在Pangolin上启动其算法交易机器人,并计划推出更多DeFi解决方案
  10. IDEA编译时出现“cannot resolve symbol“的问题时的解决方法。
  11. atom对比 vscode_Atom、Sublime Text、VSCode 三者比较
  12. 零基础新手应该如何学习平面设计
  13. linux系统中哪个能代表中国时区,linux系统修改系统时间与时区的方法有哪些
  14. swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动
  15. js截取视频第一帧_学学javascript如何截取视频第一帧
  16. 源码分析RocketMQ顺序消息消费实现原理
  17. adf机器_adf(adf文件转成shp)
  18. 表观转录组学-m6A简介
  19. QDialog添加最大化最小化按钮
  20. EasyExcel 实践与源码梳理

热门文章

  1. 聊聊jump consistent hash
  2. 《淘宝店铺经营管理一册通》一一1.3 页面中的图片应用
  3. Spring 常用工具类
  4. 【阅读笔记】Thinking in Java 对象入门
  5. 类的成员和嵌套(建模)
  6. cavium公司xPliant芯片
  7. 查看binlog文件的2种方式
  8. 如何管理大型呼叫中心
  9. Python之Numpy数组拼接,组合,连接
  10. Java 7 Concurrency Cookbook – Javier Fernández González -前言