CodeForces - 669D——(思维题)
Little Artem is fond of dancing. Most of all dances Artem likes rueda — Cuban dance that is danced by pairs of boys and girls forming a circle and dancing together.
More detailed, there are n pairs of boys and girls standing in a circle. Initially, boy number 1 dances with a girl number 1, boy number 2 dances with a girl number 2and so on. Girls are numbered in the clockwise order. During the dance different moves are announced and all pairs perform this moves. While performing moves boys move along the circle, while girls always stay at their initial position. For the purpose of this problem we consider two different types of moves:
- Value x and some direction are announced, and all boys move x positions in the corresponding direction.
- Boys dancing with even-indexed girls swap positions with boys who are dancing with odd-indexed girls. That is the one who was dancing with the girl 1 swaps with the one who was dancing with the girl number 2, while the one who was dancing with girl number 3 swaps with the one who was dancing with the girl number 4 and so one. It's guaranteed that n is even.
Your task is to determine the final position of each boy.
Input
The first line of the input contains two integers n and q (2 ≤ n ≤ 1 000 000, 1 ≤ q ≤ 2 000 000) — the number of couples in the rueda and the number of commands to perform, respectively. It's guaranteed that n is even.
Next q lines contain the descriptions of the commands. Each command has type as the integer 1 or 2 first. Command of the first type is given as x ( - n ≤ x ≤ n), where 0 ≤ x ≤ n means all boys moves x girls in clockwise direction, while - x means all boys move x positions in counter-clockwise direction. There is no other input for commands of the second type.
Output
Output n integers, the i-th of them should be equal to the index of boy the i-th girl is dancing with after performing all q moves.
Examples
6 3
1 2
2
1 2
4 3 6 5 2 1
2 3
1 1
2
1 -2
1 2
4 2
2
1 3
1 4 3 2 题意:有n对男女围成一个圈跳舞,初始状态时,按顺时针给他们标上1-n号,男生1号和女生1号跳舞,男生2号和女生2号.....男生n号和女生n号。然后就下来有2种操作,操作1是所有男生移动 i 个位置,若 i 为负数,则向顺时针移动i个位置;
否则,操作2是相邻的两个男生交换位置。在所有操作中,牛生是不动的。问,在一系列操作之后,女生1-n对应的男生分别是多少号。 思路:在移动的过程中,一个数左右的数虽然在不断的改变,但是可以发现一点,所有奇数的相对位置不会改变,所有偶数的相对位置不会改变。
因为如果是移动一定的位置,是不会改变所有数的相对位置的;而如果是交换,则奇数之间是同步交换的,而偶数之间也是同步交换的。
所以,不管如何操作,一个奇数左边的第一个奇数和右边的第一个奇数都是不会改变的,偶数也是如此。(即相对位置没有改变)。
所以,这题的解法就明了了:我们可以记录下数字1和2的位置,开始时,数字1就在第一位,数字2就在第二位,若他们移动,标记也跟着移动。
确定了1和2的位置之后,就能推出所有数的位置了。 代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#define eps 1e-7
#define ll long long
#define inf 0x3f3f3f3f
#define pi 3.141592653589793238462643383279
using namespace std;
int ans[];
int main()
{
int n,m,oper,far;
while(cin>>n>>m)
{
int sum = ;
int flag1 = ,flag2 = ; //flag1标记1的位置(初始在第一个位置 0),flag2标记2的位置(初始在第二个位置1)
for(int i=; i<m; ++i)
{
scanf("%d",&oper);
if(oper == ) //如果是操作1,表示是平移
{
scanf("%d",&far);
flag1 += far; //标记也平移
flag2 += far;
flag1 = (flag1%n + n)%n; //为防止超过范围,要进行取模
flag2 = (flag2%n + n)%n;
}
else //操作2是交换
{
if(flag1%==) flag1++; //若 1 在偶数位置,则说明是和右边的交换
else flag1--; //否则和左边交换(下标从 0 开始) if(flag2%==) flag2++; // 2 同理
else flag2--; flag1 = (flag1%n + n)%n; //取模防越界
flag2 = (flag2%n + n)%n;
}
}
for(int i=; i<n; i+=) //根据1,2的位置推出所有数的位置
{
ans[(flag1+i)%n] = i+;
ans[(flag2+i)%n] = i+;
}
for(int i=; i<n; ++i)
printf("%d%c",ans[i],i==n-?'\n':' ');
}
return ;
}
CodeForces - 669D——(思维题)的更多相关文章
- Codeforces 424A (思维题)
Squats Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit Statu ...
- Vova and Trophies CodeForces - 1082B(思维题)
Vova has won nn trophies in different competitions. Each trophy is either golden or silver. The trop ...
- CodeForces - 417B (思维题)
Crash Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit Status ...
- CodeForces - 417A(思维题)
Elimination Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit ...
- B - Sonya and Exhibition CodeForces - 1004B (思维题)
B. Sonya and Exhibition time limit per test 1 second memory limit per test 256 megabytes input stand ...
- codeforces ~ 1009 B Minimum Ternary String(超级恶心的思维题
http://codeforces.com/problemset/problem/1009/B B. Minimum Ternary String time limit per test 1 seco ...
- 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas
题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...
- C. Nice Garland Codeforces Round #535 (Div. 3) 思维题
C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- CodeForces - 631C ——(思维题)
Each month Blake gets the report containing main economic indicators of the company "Blake Tech ...
- CodeForces - 1102A(思维题)
https://vjudge.net/problem/2135388/origin Describe You are given an integer sequence 1,2,-,n. You ha ...
随机推荐
- 为什么JSP会比Beetl慢
转自:http://my.oschina.net/xiandafu/blog/475740 JSP是预编译成class的,然后模板渲染里比Beetl慢很多,文章从JSP静态文本处理不足,以及JSTL实 ...
- 机房用ROS创建时间服务器
发现机房里的服务器时间老是不同步,虽然都设置为time-a.nist.gov和time-b.nist.gov,仍然有失败的概率.可能是因为国外服务器的缘故.所以打算在机房里创建一个时间服务器.正好RO ...
- 传统项目利用Hystrix实现热点接口的服务隔离
这段时间接了个需求,需要在我目前负责的数据系统上加个接口,主要是实现用户行为的记录.前端对接的项目主要有公司的PC,WAP,WEIXIN,APP等,每个端大概有两台左右的负载.因为目前我的这个项目主要 ...
- python 构造mysql爆破器
前言: 今天已经期末考完,睡了个觉起床写了个 mysql爆破器. 思路: 1.爆破用户->用户存在的话不会报错反之报错 2.爆破密码->密码正确不会报错反之报错 3.用户名和密码一起爆破- ...
- uwsgi配置文件的一些细节,uwsgi错误invalid request block size
[uwsgi] #socket = #这种是使用代理方式访问的,不能直接输入端口访问,要搭配其他的HTTP服务比如NGINX,设置反向代理 http =: #这种是直接可以输入IP端口访问 modul ...
- Eclipse 安装Hibernate Tools 工具 提高开发效率
1.打开Eclipse 开发工具 2.配置使用hibernate Tools 3.选择search 选项卡,搜索 hibernate 关键字 点击Install Next finish ...
- 怎样给oracle数据库的用户解锁
找到并进入运行窗口:(可以用windows+r快捷键哦)输入sqlplus命令:如图 进入新窗口后使用scott/tiger用户和密码进行登录会发现登录不成功:如图 这时我们可以使用syste ...
- eclipse中debug改变变量的值
step1:debug断点到变量的下一行,在debug试图的右上角variables中看到该变量的值: step2:鼠标右键点击str出现下图,选择Change Value... step3:点击Ch ...
- 迷你MVVM框架 avalonjs 0.9发布
本版本最大的改进是引进了ms-with绑定,现在可轻松遍历对象了. 改进列表如下: 重新使用082的scanNodes方法,因为有关旧式IE下UI渲染锁死的问题已经解决了. 优化each绑定与Coll ...
- EL 和 JSTL
EL 什么是EL表达式 EL(Express Lanuage) 表达式可以嵌入在jsp页面内部 减少jsp脚本的编写 EL出现的目的是要替代jsp页面中脚本的编写 作用区间 EL最主要的作用是获取四大 ...