所以你谷加个SPJ就把我原来能不用SPJ过的程序卡掉了

P3516 [POI2011] PRZ-Shift

[评测链接](https://www.luogu.org/record/show?rid=10537809) 代码 : ```cpp // luogu-judger-enable-o2 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int p[2100], n, tag, cnt, q[2100]; int opt[41000000], ans[4100000]; char a = 'a', b = 'b'; inline int pos(int x) {return (p[x]-1+tag)%n+1; } inline int get(int x) {return ((x-tag-1)%n+n)%n+1;} inline void reverse() { int s1=get(1), s2=get(2), s3=get(3); int x=q[s1], y=q[s2], z=q[s3]; int t=p[x]; p[x]=p[y], p[y]=p[z], p[z]=t; q[p[x]]=x, q[p[y]]=y, q[p[z]]=z; } inline void print(int k, char c) { //printf("%d\n", k); if(k >= n) k%=n; if(k) { cnt ++; opt[cnt] = c - 'a'; ans[cnt] = k; if(c == a) tag += k; if(c == b) while(k--) reverse(); } } inline void move(int x) { if(pos(x) != 1) print(n-pos(x)+1, a); } inline void test() { printf("%d %d %d %d\n", pos(1), pos(2), pos(3), pos(4)); printf("%d %d %d %d\n", q[1], 2[q], 3[q], 4[q]); } inline void work() { //printf("%d %d\n", pos(1), pos(2)); for(int i = 2; i <= n-2; i ++ ) { if(pos(i) != pos(i-1)+1) { move(i); int lst = n-pos(i-1); for(int k = 2; k <= lst; k += 2) print(2, a), print(1, b); if(lst & 1) print(1, a), print(2, b); move(1); } } if(pos(n-1) == n-1) return; if(n&1) puts("NIE DA SIE"), exit(0); for(int i = 1; i <= (n-2)/2; i ++ ) { move(n-1); print(2, b); } if(pos(1) != 1)move(1); } inline void init() { bool flag = 1; scanf("%d", &n); for(int i = 1, x; i <= n; i ++ ) { scanf("%d", &x), p[x] = i; q[i] = x; if(i != x) flag = 0; } if(flag) puts("0"), exit(0); if(n == 2) printf("1\n1a"),exit(0); } inline void getans() { int tot = 0, now = -1; int k = 0; for(int i = 1; i <= cnt; i ++ ) { if(opt[i] != now) { tot++, now = opt[i]; } } if(tot == 0) return ; now = -1; k = 0; tot = 0; for(int i = 1; i <= cnt; i ++ ) { if(opt[i] != now) { if(k%n && now != -1) ans[++tot] = k%n, opt[tot] = now; now = opt[i]; k = ans[i]; } else k += ans[i]; } ans[++tot] = k%n, opt[tot] = now; printf("%d\n", tot); for(int i = 1; i <= tot; i ++ ) printf("%d%c ", ans[i], opt[i]+'a'); } int main() { init(); work(); getans(); } ```
by ToBiChi @ 2018-10-22 20:18:03


@[ToBiChi](/space/show?uid=69014) "NIE DA SIE"是什么东西
by Itst @ 2018-10-22 20:18:47


???
by 已注销%Jm9VScx @ 2018-10-22 20:19:28


有关 $N = 2$ 的特判 : 若原序列已经是有序了, 则在之前就 `return` 了, 否则需要特判
by ToBiChi @ 2018-10-22 20:19:59


@[ToBiChi](/space/show?uid=69014) 无解的话输出“NIE” 无解的话输出“NIE” 无解的话输出“NIE”
by Itst @ 2018-10-22 20:21:56


关于 NA DA SIE : POI 原题数据/题面即为 NA DA SIE @[Itst](/space/show?uid=96296) 需要我给你提供截图/链接么
by ToBiChi @ 2018-10-22 20:23:35


@[ToBiChi](/space/show?uid=69014) 这题的spj是 cn:苏卿念dalao 写的,按照洛谷的题面描述是应该输出NIE 当然loj是输出NIE DA SIE 在转移提交记录的时候还是要看一看有一些区别的
by xzyxzy @ 2018-10-22 20:25:25


贵谷不是很尊重原题要求么 ? 提供zyl原话链接 : [链接](https://www.luogu.org/discuss/show?postid=36059) 为按照原题要求, 一道大家都申请开大内存的题, 直接把内存开的更小
by ToBiChi @ 2018-10-22 20:26:56


@[ToBiChi](/space/show?uid=69014) 额……这个spj是我加的qwq
by 小可爱三岁七 @ 2018-10-22 20:27:14


@[ToBiChi](/space/show?uid=69014) 目前出了点锅……正在修的…修好了会rej的,
by 小可爱三岁七 @ 2018-10-22 20:27:41


| 下一页