首页 > 代码库 > Codeforces 490B Queue【模拟】
Codeforces 490B Queue【模拟】
题意还是很好理解的,根据题目给出描述条件然后求出这串QUEUE
我的做法就是用两个数组 before[] 和 after[] 表示 ai 前面的前面的人的学号 和 ai 后面的后面的人的学号
ex[] 表示 ai 这个人在输入的时候出现的次数,这个数组用于当人数为奇数的时候,寻找第1个人学号,只要遍历一遍1 - 10^6即可
具体还是看代码吧 QAQ ,感觉代码还是比较好理解的。
【这道题目 RE 起码5次,真正原因是数组没有开到位 = = ,也真是觉得自己最近没有写代码了好弱..........
1 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler 2 #include <stdio.h> 3 #include <iostream> 4 #include <cstring> 5 #include <cmath> 6 #include <stack> 7 #include <queue> 8 #include <vector> 9 #include <algorithm>10 #define ll long long11 #define Max(a,b) (((a) > (b)) ? (a) : (b))12 #define Min(a,b) (((a) < (b)) ? (a) : (b))13 #define Abs(x) (((x) > 0) ? (x) : (-(x)))14 15 using namespace std;16 17 const int INF = 0x3f3f3f3f;18 int a[200011], ex[1000011];19 int before[1000011], after[1000011];20 21 int main(){22 int i, j ,k, t, n, m;23 int uu, vv, cur, pos;24 while(EOF != scanf("%d",&n)){25 memset(ex, 0, sizeof(ex));26 memset(before, -1, sizeof(before));27 memset(after, -1, sizeof(after));28 for(i = 1; i <= n; ++i){ 29 scanf("%d%d",&uu,&vv);30 after[uu] = vv;31 before[vv] = uu;32 if(uu == 0){33 a[2] = vv;34 } else if(vv == 0){35 a[n - 1] = uu;36 } else{37 ++ex[uu];38 ++ex[vv];39 }40 }41 if(n % 2 == 0){42 cur = a[2];43 pos = 2;44 while(pos != n){45 pos += 2;46 cur = a[pos] = after[cur];47 }48 cur = a[n - 1];49 pos = n - 1;50 while(pos != 1){51 pos -= 2;52 cur = a[pos] = before[cur];53 }54 } else{55 cur = a[2];56 pos = 2;57 while(pos != n - 1){58 pos += 2;59 cur = a[pos] = after[cur];60 }61 for(i = 1; i <= 1000001; ++i){ //2 nums62 if(ex[i] == 1 && before[i] == -1){63 break;64 }65 }66 a[1] = i;67 cur = a[1];68 pos = 1;69 while(pos != n){70 pos += 2;71 cur = a[pos] = after[cur];72 }73 }74 75 for(i = 1; i <= n; ++i){76 printf("%d ",a[i]);77 }78 printf("\n");79 }80 return 0;81 }82 /*83 884 3 085 5 486 1 587 0 788 11 989 9 690 6 391 7 192 593 3 094 5 395 0 596 6 497 4 298 */
Codeforces 490B Queue【模拟】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。