首页 > 其他分享 >天梯赛练习题L2(021-025)

天梯赛练习题L2(021-025)

时间:2023-01-05 17:46:14浏览次数:48  
标签:练习题 typedef int LL cin L2 mp 021 sum

L2-021 点赞狂魔

如果有并列,则输出标签出现次数平均值最小的那个

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=500200,M=4002;
//unordered_map<LL,LL> a[N];
//priority_queue<LL> pq;
//priority_queue<LL,vector<LL>,greater<LL>> pq2;
struct node
{
    string s;
    LL sum;
    double avg;
}a[N];
bool cmp(node l,node r)
{
    if(l.sum!=r.sum) return l.sum>r.sum;
    else return l.avg<r.avg;
}
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        LL n;
        cin>>n;
        map<LL,LL> mp;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i].s;
            LL op;
            cin>>op;
            mp.clear();
            for(int j=1;j<=op;j++)
            {
                LL x;
                cin>>x;
                mp[x]++;
                if(mp[x]==1) a[i].sum++;
            }
            a[i].avg=(double)op/a[i].sum;
        }
        sort(a+1,a+1+n,cmp);
        if(n==0) cout<<"- - -";
        else if(n==1) cout<<a[1].s<<" - -";
        else if(n==2) cout<<a[1].s<<" "<<a[2].s<<" -";
        else if(n>=3) cout<<a[1].s<<" "<<a[2].s<<" "<<a[3].s;
    }
    return 0;
}

L2-022 重排链表

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=5002000,M=4002;
//unordered_map<LL,LL> a[N];
//priority_queue<LL> pq;
//priority_queue<LL,vector<LL>,greater<LL>> pq2;
LL address,e[N],ne[N];
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        LL head,n;
        cin>>head>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>address>>e[address]>>ne[address];
        }
        deque<LL> d;
        for(int i=head;i!=-1;i=ne[i])
        {
            d.push_back(i);
            //cout<<i<<" "<<e[i]<<" "<<ne[i]<<endl;
        }
        vector<LL> v;
        while(d.size())
        {
            v.push_back(d.back());
            d.pop_back();
            if(d.size()==0) break;
            v.push_back(d.front());
            d.pop_front();
        }
        for(int i=0;i<v.size();i++)
        {
            printf("%05d %d ",v[i],e[v[i]]);
            if(i==v.size()-1) printf("-1\n");
            else printf("%05d\n",v[i+1]);
        }
    }
    return 0;
}

L2-023 图着色问题

注意颜色一定只能存在k种,不可以多也可以少

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=500200,M=4002;
//unordered_map<LL,LL> a[N];
//priority_queue<LL> pq;
//priority_queue<LL,vector<LL>,greater<LL>> pq2;
LL n,m,k,q;
LL st[N];
vector<LL> v[N];
LL check()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<v[i].size();j++)
            if(st[i]==st[v[i][j]]) return 0;
    }
    return 1;
}
int main()
{
    //cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        cin>>n>>m>>k;
        for(int i=1;i<=m;i++)
        {
            LL x,y;
            cin>>x>>y;
            v[x].push_back(y);
            v[y].push_back(x);
        }
        map<LL,LL> mp;
        cin>>q;
        while(q--)
        {
            mp.clear();
            LL sum=0;
            for(int i=1;i<=n;i++)
            {
                LL x;
                cin>>x;
                mp[x]++;
                if(mp[x]==1) sum++;
                st[i]=x;
            }
            if(sum!=k) cout<<"No"<<endl;
            else
            {
                if(check()==1) cout<<"Yes"<<endl;
                else cout<<"No"<<endl;
            }
        }
    }
    return 0;
}

L2-024 部落

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=500200,M=4002;
//unordered_map<LL,LL> a[N];
//priority_queue<LL> pq;
//priority_queue<LL,vector<LL>,greater<LL>> pq2;
LL n,father[N];
LL find(LL x)
{
    if(father[x]!=x) father[x]=find(father[x]);
    return father[x];
}
void init()
{
    for(LL i=0;i<=10010;i++)
        father[i]=i;
}
void merge(LL x,LL head)
{
    LL fx=find(x),fh=find(head);
    if(fx!=fh) father[fx]=fh;
}
int main()
{
    //cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        init();
        cin>>n;
        map<LL,LL> mp;
        LL sum=0;
        for(LL i=1;i<=n;i++)
        {
            LL op;
            cin>>op;
            LL head;
            cin>>head;
            mp[head]++;
            if(mp[head]==1) sum++;
            for(LL j=2;j<=op;j++)
            {
                LL x;
                cin>>x;
                mp[x]++;
                if(mp[x]==1) sum++;
                merge(x,head);
            }
        }
        LL ans=0;
        map<LL,LL> pm;
        for(LL i=0;i<=10010;i++)
        {
            if(mp[i]!=0)
            {
                if(pm[find(i)]==0) pm[find(i)]++,ans++;
                else ;
            }
        }
        cout<<sum<<" "<<ans<<endl;
        LL q;
        cin>>q;
        while(q--)
        {
            LL a,b;
            cin>>a>>b;
            if(find(a)!=find(b)) cout<<"N"<<endl;
            else cout<<"Y"<<endl;
        }
    }
    return 0;
}

L2-025 分而治之

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=500200,M=4002;
//unordered_map<LL,LL> a[N];
//priority_queue<LL> pq;
//priority_queue<LL,vector<LL>,greater<LL>> pq2;
LL n,m,q,k;
LL vis[N];
vector<LL> v[N];
LL check()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<v[i].size();j++)
        {
            //这个地方没有被攻下并且叶子节点没有被标记
            //就说明这两个点还是处于连线状态
            if(vis[i]==0&&vis[v[i][j]]==0) return 1;
        }
    }
    return 0;
}
int main()
{
    //cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        cin>>n>>m;
        for(int i=1;i<=m;i++)
        {
            LL x,y;
            cin>>x>>y;
            v[x].push_back(y);
            v[y].push_back(x);
        }
        cin>>q;
        while(q--)
        {
            memset(vis,0,sizeof vis);
            cin>>k;
            while(k--)
            {
                LL x;
                cin>>x;
                vis[x]=1;//标记地点
            }
            if(check()==1) cout<<"NO"<<endl;
            else cout<<"YES"<<endl;
        }
    }
    return 0;
}

标签:练习题,typedef,int,LL,cin,L2,mp,021,sum
From: https://www.cnblogs.com/Vivian-0918/p/17025716.html

相关文章

  • 重磅直播|PatchmatchNet:一种高效的Multi-view Stereo框架(CVPR2021)
    本期由苏黎世联邦理工学院ComputerVisionandGeometryGroup王方锦华博士分享,分享的主题为《PatchmatchNet:基于传统PatchMatch算法的高效Multi-viewStereo框架》,主讲人会......
  • Good Bye 2021: 2022 is NEAR D
    GoodBye2021:2022isNEARD这次虽然做了三个(但是C是后来自己看了其他人的代码才发现的问题)下次一定要double的判断大小一定要以x-y<=1e-10这种形式,不能直接和int型......
  • 重磅直播 | CenterPoint:三维点云目标检测算法梳理及最新进展(CVPR2021)
    本期由德州大学奥斯汀分校在读生尹天为分享,分享的主题为《CenterPoint:三维点云目标检测算法梳理及最新进展(CVPR2021)》,主讲人会对该领域的核心和主流技术进行详细讲解,欢迎大......
  • L2-005 集合相似度 (25 point(s))
    给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相......
  • L2-006 树的遍历 (25 point(s))
    给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行......
  • L2-026 小字辈 (25 分)
    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。输入格式:输入在第一行给出家族人口总数N(不超过100000的正整数)——简单起见,我们把家族成员从1到N编号。随......
  • L2-016 愿天下有情人都是失散多年的兄妹 (25 分)
    呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟......
  • [unity 2d 2021]官方小狐狸项目OnTriggerEnter2D函数问题
    防止遗忘在给小狐狸添加boxcollider和circlecollider时运用OnTriggerEnter2D函数碰撞到Cherry和Gem的时候有时候会出现两次增加原因在于两个collider有时同时碰撞......
  • #ACM2021_25. 有关2022
    今天整了个小题,但可惜超时了(悲我之前的做法(暴力枚举,但超时)#include<stdio.h>#include<string.h>intmain(intargc,constchar*argv[]){inta,b,c,d,e,sum......
  • [幻灯更新]剔除伪创新的领域驱动设计[2021年1月]
    伪创新初中数学里要学习全等三角形、相似三角形、SSS、SAS……,到了高中以后学了正弦定理、余弦定理等解三角形的知识……就不会再回去用初中的方法解题了。但是,不是所有人都......