The 18th Zhejiang University Programming Contest
Time:2018.6.17 8:20 - 12:20
Link solve:4/10
A
签到
B
题意
分析
C
分析
卡内存题啊,vector会炸,vector空间是成倍增长的啊,list了解一下???
#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn = 3e5+7; list<int>lis[maxn]; int t,s,v,op,T,n,q; int main() { scanf("%d", &T); while(T--) { scanf("%d%d", &n, &q); for(int i=1;i<=n;i++) lis[i].clear(); while(q--) { scanf("%d", &op); if(op==1) { scanf("%d%d", &s, &v); lis[s].push_back(v); } else if(op==2) { scanf("%d", &v); if(lis[v].size()>0) { printf("%d\n", lis[v].back()); lis[v].pop_back(); } else { printf("EMPTY\n"); } } else { scanf("%d%d", &s, &t); lis[s].splice(lis[s].end(),lis[t]); } } } }
D
题意
分析
E
题意
分析
F
分析
同一类型肯定是从小到大更优,不同类型的取得顺序会影响答案,
定义dp[i][j]:第一个取了前
G
分析
注意 n,m<=1e5,但n×m<=3e5,故可以用一维数组代替二维数组,每次用的时候在离散化回来就行,bfs即可
二维平面上的任何一点,从其出发再回到这个点,都要走偶数步,很好证明,因为不管在x和y方向上和起点发生偏移,回到这个点相当于偏移量×2,
H
题意
分析
I
题意
分析
J
签到
Summary
Ym:
czh: