HDU - 5818 Joint Stacks 想法題 關鍵
阿新 • • 發佈:2018-03-11
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 想法題 關鍵