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: