1. 程式人生 > >HDU - 5818 Joint Stacks 想法題 關鍵

HDU - 5818 Joint Stacks 想法題 關鍵

warn set mod swa war std ORC nbsp pos

http://codeforces.com/problemset/problem/669/D

題意:n個數1~N圍成一個圈。q個操作包括操作1:輸入x, 所有數右移x。操作2:1,2位置上的數(swap(a[1], a[2])交換;3,4交換。。。。

題解:觀察,發現所有奇數行為都是一樣的,偶數同理,(對於操作1 兩者相同,對於操作2 奇數位++,偶數位上--;

模擬1,2,即可,然後依次輸出其它數字即可。(看清

ac代碼:

#define    _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include
<iostream> using namespace std; const int maxn = 1e6 + 5; const int mod= 1e9 + 5; int a[maxn], x[maxn]; int main(){ int n, q; cin >> n >> q; int A=1, B=2; for (int i = 1; i <= q; i++) { int x; scanf("%d", &x); if(x==1){ scanf(
"%d", &x); A += x; B += x; } else { if (A & 1)A++, B--; else A--, B++; } A %= n; B %= n; } while (A <= 0)A += n; while (B <= 0)B += n; for (int i = 1; i < n; i+=2) { a[A] = i; a[B] = i + 1
; A+=2; B+=2; if (A > n)A -= n; if (B > n)B -= n; } for (int i = 1; i <= n; i++)cout << a[i] << ; }

HDU - 5818 Joint Stacks 想法題 關鍵