首页 > 其他分享 >2024牛客暑期多校训练营2

2024牛客暑期多校训练营2

时间:2024-07-18 19:30:21浏览次数:16  
标签:mm 题意 int 询问 多校 2024 牛客 点数 define

E

题意:给定一个数 \(x\) ,找出严格小于 \(x\) 的一个数 \(y\) 使得 \(gcd(x,y)=x\oplus y\) 。

赛时小 \(wa\) 一次,答案就是 \(x-lowbit(x)\) (不为 \(0\) 的前提下)。

C

题意:

H

B (补题)

题意:给定图, \(q\) 次询问,每次给出一个点集,求解该点集的最小生成树。(保证询问的点数之和不超过 \(1e5\) )。

赛时各种乱七八糟的思路……对于点很少的询问,完全可以每次都暴力跑 \(kruskal\) ;对于点很多的询问,肯定不会超过很多次,所以也可也直接跑 \(kruskal\) ……所以关键来到了怎么找出点集里所有涉及到的点。对于点数很少的询问,直接两重 \(for\) 循环判断边是否存在;对于点数很多的询问,肯定不会很多次,所以直接遍历所有边即可。(正解是这样的,我写了还是 \(tle\) ,下面是几个优化)

  • \(map<pii,int>\) 改为 \(unordered\_map<int,int>\) ,将点对哈希成数存储。

  • 提前对所有边按照权值排序,对于点数很多的询问遍历完以后就不需要再次排序

  • 对于点数很少的询问,在寻找所有的边时,比较邻接表查边的另一端是否在点集中与直接 \(for\) 循环判断与点集中剩余点是否构成合法边哪一个更优

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define il inline
#define endl '\n'
const int N=1e5+5;
const int mod=998244353;

int fa[N],n,m;
struct edge
{
    int a,b,w;
    bool operator<(const edge &W)const { return w<W.w; }
}e[N],edge[N];
il int find(int x)
{
    if(fa[x]!=x) fa[x]=find(fa[x]);
    return fa[x];
}
il int kruskal(int num)
{
    int res=0,cnt=0;
    for(int i=1;i<=m;i++)
    {
        int a=edge[i].a,b=edge[i].b,w=edge[i].w;
        a=find(a),b=find(b);
        if(a!=b) 
        {
            fa[a]=b;
            res+=w;
            cnt++;
        }
    }
    if(cnt<num-1) return -1;
    return res;
}
const int h=3e9+9;
int gethash(int x,int y) { return x*h+y; }
unordered_map<int,int>mp,mpp;
vector<int>g[N];
void solve()
{
    int mm,qx;cin>>n>>mm>>qx;
    for(int i=1;i<=mm;i++)
    {
        int u,v,w;cin>>u>>v>>w;
        e[i]={u,v,w};
        g[u].push_back(v),g[v].push_back(u);
        mp[gethash(u,v)]=mp[gethash(v,u)]=w;
    }
    vector<int>z(100005);
    sort(e+1,e+mm+1);
    for(int i=1;i<=qx;i++)
    {
        mpp.clear();
        int num; cin>>num;
        m=0;
        for(int j=1;j<=num;j++) 
        {
            cin>>z[j];
            fa[z[j]]=z[j];
            mpp[z[j]]++;
        }
        if(num>300) 
        {
            for(int i=1;i<=mm;i++)
            {
                auto [u,v,w]=e[i];
                if(mpp[u]&&mpp[v]) edge[++m]={u,v,w};
            }
        }
        else 
        {
            for(int j=1;j<=num;j++)
            {
                int u=z[j];
                if(g[u].size()<(num-j))
                {
                    for(auto v:g[u])
                        if(mpp[v]) edge[++m]={u,v,mp[gethash(u,v)]};
                }
                else 
                {
                    for(int k=j+1;k<=num;k++)
                    {
                        int v=z[k],f=mp[gethash(u,v)];
                        if(f) edge[++m]={u,v,f};
                    }
                }
            }
            sort(edge+1,edge+m+1);
        }
        cout<<kruskal(num)<<endl;
    }
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int T=1;
    while(T--) solve();
    return 0;
}

标签:mm,题意,int,询问,多校,2024,牛客,点数,define
From: https://www.cnblogs.com/mhw-mathcode/p/18310291

相关文章

  • 【2024】springboot O2O生鲜食品订购
     博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大......
  • 【2024】springboot O2O生鲜食品订购
     博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大......
  • 七款热门企业数据加密软件推荐|2024年加密软件最新整理出炉!
    古言到:“知己知彼,百战不殆。”当今时代,数据为王!企业数据的保护已成为竞争中的关键一环。数据加密软件作为守护企业数字资产的利剑,其重要性日益凸显。2024年,市场上涌现出一批功能强大、特色鲜明的企业数据加密软件。本文精选七款热门软件,为您详细剖析其独特之处,助您在数据安......
  • 七款主流公司办公加密软件推荐|2024年加密软件最新榜单,不得不看
    小李眉头紧锁地说:“最近项目文件泄露事件频发,真是让人头疼。我们得赶紧找一款靠谱的办公文件加密软件,保护公司的核心数据。”小张点头赞同:“是啊,我也一直在关注这个问题。我听说今年市场上出了不少新的加密软件,我们得好好挑一挑。”于是,两人决定一起研究并推荐七款主流的公......
  • 常用的7款加密软件排行榜|办公文件加密(2024干货收藏)
    李明:“王丽,你知道吗?最近我们部门的一些项目资料差点被泄露出去,真是让人担心。”王丽:“是啊,数据安全问题真的不容忽视。我听说现在有很多加密软件可以帮到我们,你有了解过吗?”李明:“确实,我研究了一下,发现有几款加密软件特别适合我们办公使用。不如我们一起来整理一个排行榜,分......
  • 2024-07-18 code标签渲染时会多出空格是怎么回事?
    问题就是我给code标签传递一段源代码,该代码明明没有空格,但实际渲染却多了一串空格?如下图所示: 原因:code标签包裹的内容会原原本本的渲染出来,包括空格。我查看了我的代码: 我是这么写的:<code>{{sourceCode}}</code>{{sourceCode}}前面有空格,code标签直接把它们......
  • 【学术会议征稿】第六届光电材料与器件国际学术会议(ICOMD 2024)
    第六届光电材料与器件国际学术会议(ICOMD2024)20246th InternationalConferenceonOptoelectronicMaterialsandDevices第六届光电材料与器件国际学术会议(ICOMD2024)将于2024年11月1-3日在中国·重庆召开。大会面向基础与前沿、学科与产业,建立起前沿的学术交流平台,将......
  • 【学术会议征稿】第八届控制工程与先进算法国际论坛(IWCEAA 2024)
    第八届控制工程与先进算法国际论坛 8th International Workshopon ControlEngineering and AdvancedAlgorithms(IWCEAA 2024)第八届控制工程与先进算法国际论坛(IWCEAA 2024)将于2024年11月1-3日在中国南京隆重举行。会议旨在为从事算法、控制工程与计算机技术研究......
  • 【学术会议征稿】第四届智能电力与系统国际学术会议(ICIPS 2024)
    第四届智能电力与系统国际学术会议(ICIPS2024)20244th InternationalConferenceonIntelligentPowerandSystems(ICIPS2024)第四届智能电力与系统国际学术会议(ICIPS2024)将于2024年11月1-3日在湖北宜昌举行,国际分会场将由莫道克大学举办,在澳大利亚珀斯召开。ICIPS202......
  • 【学术会议征稿】第六届信息与计算机前沿技术国际学术会议(ICFTIC 2024)
    第六届信息与计算机前沿技术国际学术会议(ICFTIC2024)20246th InternationalConferenceonFrontierTechnologiesofInformationandComputer   第六届信息与计算机前沿技术国际学术会议(ICFTIC2024)将在中国青岛举行,会期是2024年11月8-10日,为期三天,本次会议是......