codeforces 251B Playing with Permutations 模拟

发布时间:2017-3-27 12:50:18 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"codeforces 251B Playing with Permutations 模拟",主要涉及到codeforces 251B Playing with Permutations 模拟方面的内容,对于codeforces 251B Playing with Permutations 模拟感兴趣的同学可以参考一下。

View Code #include<cstdio> #include<cstring> int q[103], p[103], s[103], pp[103]; int n, k, a, b; int main() { int i, j; scanf("%d%d", &n, &k); for(i = 1; i <= n; i++) scanf("%d", &q[i]); for(i = 1; i <= n; i++) scanf("%d", &s[i]); //求解操作1的周期 for(i = 1; i <= n; i++) pp[i] = p[i] = i; while(a <= k) { for(j = 1; j <= n && p[j] == s[j]; j++); if(j == n+1) break; for(j = 1; j <= n; j++) pp[j] = p[q[j]]; for(j = 1; j <= n; j++) p[j] = pp[j]; a++; } //求解操作2的周期 for(i = 1; i <= n; i++) pp[i] = p[i] = i; while(b <= k) { for(j = 1; j <= n && p[j] == s[j]; j++); if(j == n+1) break; for(j = 1; j <= n; j++) pp[q[j]] = p[j]; for(j = 1; j <= n; j++) p[j] = pp[j]; b++; } //对两边周期都为1进行特判 if(a == 1 && b == 1 && k == 1) puts("YES"); else if(a == 1 && b == 1) puts("NO"); else if(a == k+1 && b == k+1) puts("NO"); // 两边都走不到 else if(!a && !b) puts("NO"); //一开始的串就是目标(a == 0 && b == 0) else if(((b+k+1)&1) || ((a+k+1)&1)) puts("YES"); //左右只要有一边可以到达 else puts("NO"); return 0; } /* 4 3 2 1 4 3 4 3 1 2 */  

上一篇:codeforces 252B Unsorting Array 暴力+贪心
下一篇:西游记中富有深意的三封信

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款