2019 ICPC NERC
Posted ordinarv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019 ICPC NERC相关的知识,希望对你有一定的参考价值。
2019 ICPC NERC
https://codeforces.com/contest/1250
A 结构体模拟
结构体维护当前pos,maxpos 和 minpos。pos数组维护位置i的id是多少。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 typedef pair<int,int> piir; 5 const int maxn = 1e5+5; 6 7 struct node{ 8 int p,mx,mi; 9 }post[maxn]; 10 11 int pos[maxn];//pos[i] 位置i的id是多少 12 int n,m,a[4*maxn]; 13 void init(){ 14 for(int i=1;i<=n;i++){ 15 post[i].p=i; 16 post[i].mi=post[i].mx=i; 17 pos[i]=i; 18 } 19 } 20 void debug(){ 21 // printf("pos "); 22 // for(int i=1;i<=n;i++) 23 // printf("%d ",pos[i]); 24 // printf(" "); 25 for(int i=1;i<=n;i++){ 26 printf("%d ",post[i].p); 27 } 28 printf(" "); 29 } 30 31 void work(){ 32 33 for(int i=0;i<m;i++){ 34 35 int cur=a[i]; 36 if(post[cur].p!=1){ 37 int pre = pos[post[cur].p-1]; 38 swap(pos[post[cur].p-1],pos[post[cur].p]); 39 post[cur].p--; 40 post[cur].mi = min(post[cur].p,post[cur].mi); 41 post[pre].p++; 42 post[pre].mx = max(post[pre].p,post[pre].mx); 43 44 } 45 } 46 for(int i=1;i<=n;i++){ 47 printf("%d %d ",post[i].mi,post[i].mx); 48 } 49 //debug(); 50 } 51 int main(){ 52 //#ifndef ONLINE_JUDEG 53 // freopen("in.txt","r",stdin); 54 //#endif 55 scanf("%d%d",&n,&m); 56 for(int i=0;i<m;i++) 57 scanf("%d",&a[i]); 58 init(); 59 work(); 60 return 0; 61 }
B
枚举即可。学长三分又wa了
C 线段树
E
2-sat
F
签到
H
思考即可
J
二分
L
模拟,我写的太复杂了,if...else写懵了
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 typedef long long ll; 5 typedef pair<int,int> piir; 6 const int maxn = 15; 7 const int INF = 2e5+5; 8 9 int na,nb,nc,a,b,c; 10 11 int main(){ 12 int _; 13 scanf("%d",&_); 14 while(_--){ 15 int ans=0,tmp=0; 16 na=nb=nc=0; 17 scanf("%d%d%d",&a,&b,&c); 18 if(c>a) swap(a,c); 19 na=c;a-=c; 20 if(a>=c) nb=c,a-=c; 21 else { 22 nb=a,a=0; 23 24 if(b>=(c-nb)){ 25 b-=(c-nb),nb=c; 26 } 27 else { 28 nb+=b,b=0; 29 } 30 } 31 ans = na; 32 if(a==0&&b) { 33 tmp=b%3?b/3+1:b/3; 34 ans=na+tmp; 35 } 36 else{ 37 ans=na,tmp=0; 38 while(a>0 && b>0){ 39 a--; 40 na++; 41 if(a==0){ 42 if(b>=2){ 43 b-=2; 44 tmp=b%3?b/3+1:b/3; 45 ans=na+tmp; 46 } 47 else { 48 ans =na; 49 } 50 break; 51 52 } 53 54 a--; 55 nb++; 56 if(a==0){ 57 if(b>=1){ 58 b-=1; 59 tmp=b%3?b/3+1:b/3; 60 ans=na+tmp; 61 } 62 else { 63 ans =na; 64 } 65 break; 66 } 67 68 b--; 69 nc++; 70 71 if(b==0){ 72 tmp=a%2?a/2+1:a/2; 73 ans=na+tmp; 74 break; 75 } 76 77 } 78 79 } 80 printf("%d ",ans); 81 } 82 return 0; 83 }
N
模拟图论
忘记考虑环这种重边这种情况。
以上是关于2019 ICPC NERC的主要内容,如果未能解决你的问题,请参考以下文章
2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest (Online Mirror, ICPC Rules, Teams
2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest 部分题目题解