码迷,mamicode.com
首页 > 其他好文 > 详细

D. Little Artem and Dance---cf669D(模拟)

时间:2016-05-06 00:18:36      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:http://codeforces.com/problemset/problem/669/D

给你n个数,一开始是1 2 3 4 5 6 ... n 这样的

现在有两个操作,第一个操作是所有数向右边移动x个位置 

第二个操作奇数和偶数的位置互换

现在有Q个指令,问最后的序列是什么;

 n and q (2 ≤ n ≤ 1 000 000, 1 ≤ q ≤ 2 000 000)

 

由于数据范围比较大,但是我们可以发现所以得偶数他们相邻的总是2 4 6 8 10...奇数都是1 3 5 7 9 11...也就是说无论怎么变他们的相对位置是不变的,就是每个数(奇数或偶数)的前后总是固定的,

所以我们可以记录数字1和2的位置在哪里,然后依次填出最终答案;

为了方便我们下标从0开始;

 

技术分享
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <vector>
using namespace std;
typedef long long LL;
#define N 1000100
#define met(a, b) memset(a, b, sizeof(a))

int n, Q, a[N];

int main()
{
    while(scanf("%d %d", &n, &Q)!=EOF)
    {
        met(a, 0);

        int first = 0, second = 1, op, x;

        while(Q--)
        {
            scanf("%d", &op);
            if(op == 1)
            {
                scanf("%d", &x);
                first = (x + first + n) % n;
                second = (x + second + n) % n;
            }
            else
            {///如果1所在位置下标是偶数(相对于下标为0来说的),那么1的位置就要往后挪一位,2则相反;
                if(first%2)
                {
                    first = (first - 1 + n) % n;
                    second = (second + 1 + n) % n;
                }
                else
                {
                    first = (first + 1 + n) % n;
                    second = (second - 1 + n) % n;
                }
            }
        }
        int num = 1;
        while(num <= n)///填入n个数
        {
            a[first] = num++;///奇数所在位置
            a[second] = num++;
            first = (first+2) % n;///要加两个的,
            second = (second+2) % n;
        }
        for(int i=0; i<n; i++)
            printf("%d%c", a[i], i==n-1?\n: );
    }
    return 0;
}
/*
6 9
2
1 -2
2
1 -6
1 -6
1 4
2
1 -1
2

2 5 4 1 6 3
*/
View Code

 

D. Little Artem and Dance---cf669D(模拟)

标签:

原文地址:http://www.cnblogs.com/zhengguiping--9876/p/5463865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!