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:

 

posted @ 2018-06-17 11:50  Deadlined  阅读(194)  评论(0编辑  收藏  举报