zoukankan      html  css  js  c++  java
  • 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:

    1. Value x and some direction are announced, and all boys move x positions in the corresponding direction.
    2. 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.

      比赛的时候是观察到奇偶的规律,只是码的时候拘于第一位和第二位女孩对应的男孩子的编号,一直WA。

      不能用 cin ,会超时

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <string>
     4 #include <cstring>
     5 #include <cmath>
     6 #include <sstream>
     7 #include <algorithm>
     8 #include <set>
     9 #include <map>
    10 #include <vector>
    11 #include <queue>
    12 #include <iomanip>
    13 #include <stack>
    14 
    15 using namespace std;
    16 
    17 typedef long long LL;
    18 const int INF = 0x3f3f3f3f;
    19 const int MAXN = 100005;
    20 const int MOD = 1e9 + 7;
    21 
    22 #define MemI(x) memset(x, -1, sizeof(x))
    23 #define Mem0(x) memset(x, 0, sizeof(x))
    24 #define MemM(x) memset(x, 0x3f, sizeof(x))
    25 
    26 //通过题目的条件可以得出,奇偶数是有规律的
    27 //所以只要求出第一位男孩子和第二位男孩子最后所在的位置即可求解
    28 int b[1000005];
    29 int main()
    30 {
    31     int n, q;
    32     scanf("%d%d", &n, &q);
    33     int a1 = 1, a2 = 2, x, y;
    34     while(q--)
    35     {
    36         scanf("%d", &x);
    37         //男孩子都移动 y 个坐标
    38         if(x == 1)
    39         {
    40             scanf("%d", &y);
    41             a1 = (a1 + y + n) % n;
    42             a2 = (a2 + y + n) % n;
    43         }
    44         else
    45         {
    46             //第一位男孩子是奇数时,要前进,此时第二位男孩子一定在偶数位,根据奇偶规律
    47             if(a1 % 2)
    48             {
    49                 a1 = (a1 + 1 + n) % n;
    50                 a2 = (a2 - 1 + n) % n;
    51             }
    52             else
    53             {
    54                 a1 = (a1 - 1 + n) % n;
    55                 a2 = (a2 + 1 + n) % n;
    56             }
    57         }
    58     }
    59     //将所有孩子的编号排好,这里注意第 n 个孩子 %n 为 0,即最后输出
    60     for(int i = 0;i < n;i += 2)
    61     {
    62         b[(a1 + i) % n] = i + 1;
    63         b[(a2 + i) % n] = i + 2;
    64     }
    65     for(int i = 1;i < n;++i)
    66         printf("%d ", b[i]);
    67     printf("%d
    ", b[0]);
    68     return 0;
    69 }
    现在所有的不幸都是以前不努力造成的。。。
  • 相关阅读:
    (OK) port_lighttpd_to_Android——没有基于android 4.4源码
    Linux添加头文件路径—INCLUDE_PATH
    (OK) 交叉编译hello.c for android (--sysroot),不使用Android.mk和ndk-build
    Building and running Node.js for Android
    编译node-v4.2.1,出现错误:undefined reference to getpwuid_r
    我为什么向后端工程师推荐Node.js
    (OK) 编译 pcre-8.37 静态库
    port_lighttpd_to_Android——基于android 4.4源码
    深受C/C++程序员欢迎的11款IDE
    推荐!国外程序员整理的 PHP 资源大全
  • 原文地址:https://www.cnblogs.com/shuizhidao/p/9361899.html
Copyright © 2011-2022 走看看