Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟
題目連接:
http://www.codeforces.com/contest/669/problem/D
Description
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 2 and 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.
Sample Input
6 3
1 2
2
1 2
Sample Output
4 3 6 5 2 1
Hint
題意
給你n個數,一開始是1 2 3 4 5 6 這樣的
現在有兩個操作,第一個操作是所有數向右邊移動x個位置
第二個操作奇數和偶數的位置互換
題解:
比較顯然就是,奇數和偶數位置的數的相對位置是不會變的
那么我們只要知道1和2這兩個位置的數是啥就好了
然后交換的時候,我們就模擬一下這兩個位置的交換就好了
代碼
#include<bits/stdc++.h> using namespace std;int n,q; int a,b; int main() {scanf("%d%d",&n,&q);b = 0,a = 0;for(int i=1;i<=q;i++){int op;scanf("%d",&op);if(op==1){int x;scanf("%d",&x);a = (n+a-x)%n;b = (n+b-x)%n;if(x%2)swap(a,b);}else{a = (a+n-1)%n;b = (b+n+1)%n;swap(a,b);}}for(int i=1;i<=n;i++){if(i%2)cout<<(a+i-1+n)%n+1<<" ";else cout<<(b+i-1+n)%n+1<<" ";}cout<<endl; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高冷网名女两个字简约115个
- 下一篇: Java解压上传zip或rar文件,并解