• 华东交通大学2017年ACM“双基”程序设计竞赛 1002


    Problem Description

    一天YZW参加了学校组织交际舞活动,活动的开始活动方分别给男生和女生从1-n进行编号,按照从小到大顺时针的方式进行男女搭档分配,相同编号的男女组合成一对,例如一号男生与一号女生配对,以此类推。可是YZW对其中一个小姐姐一见钟情,于是机智的他向管理员提出了两种操作
    1.在这种情况下,管理员会给出移动的方向和大小,然后所有的男生向着这个方向移动x个位置。2.管理员会把相邻的奇数和偶数位置上的男生互换。
    在其中女生的位置是不会变的。可是YZW不知道经过这些Q次操作后,他自己身在何方,能否到达自己喜欢的小姐姐身边。

    Input

    输入一个T代表T组数据(T<=10),每组输入一个n和q(2≤n≤200000,1≤q≤1000000,其中n为偶数),分别代表有n对男女和有q次操作。
    接下来是q行,每一行输入:
    1.x代表所有男生移动的位置的大小。同时x>0表示顺时针移动,x<0表示逆时针移动。
    2.代表管理员会把相邻的奇数和偶数位置上的男生互换。

    Output

    输出1号到n号小姐姐配对的分别是几号男生。

    Sample Input

    1
    6 3
    1 2
    2
    1 2

    Sample Output

    4 3 6 5 2 1

    解法:CF原题,就不必解释了http://codeforces.com/problemset/problem/641/C
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int ope1 = 0,ope2 = 1;
     4 int n,q;
     5 int a[1000005];
     6 int t;
     7 int main()
     8 {
     9     scanf("%d",&t);
    10     while(t--)
    11     {
    12         scanf("%d%d",&n,&q);
    13         while(q--)
    14         {
    15             int a,b;
    16             scanf("%d",&a);
    17             if(a==1)
    18             {
    19                 scanf("%d",&b);
    20                 ope1=(ope1+b+n)%n;
    21                 ope2=(ope2+b+n)%n;
    22             }
    23             else if(a==2)
    24             {
    25                 if(ope1%2==0)
    26                 {
    27                     ope1++;
    28                     ope2--;
    29                 }
    30                 else
    31                 {
    32                     ope1--;
    33                     ope2++;
    34                 }
    35             }
    36         }
    37         int z=1;
    38         for(int i=0,j=ope1; i<n/2; i++,j=(j+2)%n)
    39         {
    40             a[j]=z;
    41             z=z+2;
    42         }
    43         z=2;
    44         for(int i=0,j=ope2; i<n/2; i++,j=(j+2)%n)
    45         {
    46             a[j]=z;
    47             z=z+2;
    48         }
    49         for(int i=0; i<n-1; i++)
    50             printf("%d ",a[i]);
    51         printf("%d
    ",a[n-1]);
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    170516、ActiveMQ 的安装与使用(单节点)
    170515、mybatis批量操作
    170512、java日志文件log4j.properties配置详解
    170511、Spring IOC和AOP 原理彻底搞懂
    170510、数据库默认隔离级别
    170509、文本编辑器编写的shell脚本在linux下无法执行的解决方法
    170508、忘记jenkins密码或者修改jenkins密码
    170505、MySQL的or/in/union与索引优化
    170504、MongoDB和MySQL对比(译)
    Jenkins Android 打包
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/7857569.html
Copyright © 2020-2023  润新知