首页 > 其他分享 >2024 sheep

2024 sheep

时间:2024-09-12 16:14:24浏览次数:1  
标签:sheep int siz 2024 ss id cmp

image

类似最小生成树,对边排序依次加上,但是数据大,要进行离线处理,存起来,将比他小的边加上,判断连通用并查集(路径压缩,按秩合并)。

唐完的我在赛时没写按秩,而且while没写终止条件(唐老鸭)。

先按秩后合并,测评机有点玄学但确实要这样。

初版:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int ans[N];
int n,m,q;
int siz[N];
struct ss{
	int u,v,w;
}e[N];

struct sa{
	int s,t,c,id;
}a[N];

bool cmp(ss g,ss h){
	return g.w<h.w;
}

bool cmp2(sa g,sa h){
	return g.c<h.c;
}

int fa[N];
int find(int x){
	return fa[x]==x?x:find(fa[x]);
}

int main(){
	freopen("sheep.in","r",stdin);
	freopen("sheep.out","w",stdout);
	ios::sync_with_stdio(false);
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++){
		fa[i]=i;
		siz[i]=1;
	}
	for(int i=1;i<=m;i++){
		cin>>e[i].u>>e[i].v>>e[i].w;
	}
	sort(e+1,e+m+1,cmp);
	for(int i=1;i<=q;i++){
		cin>>a[i].s>>a[i].t>>a[i].c;
		a[i].id=i;
	}
	sort(a+1,a+q+1,cmp2);
	int j=1;
	int x,y;
	for(int i=1;i<=m;i++){
		while(e[i].w>a[j].c&&j<=q){
			if(find(a[j].s)==find(a[j].t)){
				ans[a[j].id]=1;
			}
			++j;
		}
		x=find(e[i].u);
		y=find(e[i].v);
		if(x==y){
			continue;
		}
		if(siz[x]>siz[y]){
			swap(x,y);
		}
		siz[y]+=siz[x];
		fa[x]=y;
	}
	while(j<=q){
		ans[a[j].id]=(find(a[j].s)==find(a[j].t));
		j++;
	} 
	for(int i=1;i<=m;i++){
		if(ans[i]){
			cout<<"Yes\n";
		}
		else{
			cout<<"No\n";
		}
	}
	return 0;
}

抄版:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
bool ans[N];
int n,m,q;
int siz[N];
struct ss{
	int u,v,w;
	int id;
}e[N],a[N];

bool cmp(ss g,ss h){
	return g.w<h.w;
}

int fa[N];
int find(int x){
	return fa[x]==x?x:find(fa[x]);
}

void merge(int u,int v){
	u=find(u);
	v=find(v);
	if(u==v){ 
		return;
	}
	if(siz[u]>siz[v]){
		swap(u,v);
	}
	fa[u]=v;
	siz[v]+=siz[u];
	return;
}

int main(){
	freopen("sheep.in","r",stdin);
	freopen("sheep.out","w",stdout);
	ios::sync_with_stdio(false);
	
	cin>>n>>m>>q;
	
	for(int i=1;i<=n;i++){
		fa[i]=i;
		siz[i]=1;
	}
		
	for(int i=1;i<=m;i++){
		cin>>e[i].u>>e[i].v>>e[i].w;
	}

	for(int i=1;i<=q;i++){
		cin>>a[i].u>>a[i].v>>a[i].w;
		a[i].id=i;
	}
	
	sort(e+1,e+m+1,cmp);
	sort(a+1,a+q+1,cmp);
	
	for(int i=1,j=1;i<=q;i++){
		while(e[j].w<=a[i].w&&j<=m){
			merge(e[j].u,e[j].v);
			++j;
		}
		ans[a[i].id]=(find(a[i].u)==find(a[i].v)); 
	}
	
	for(int i=1;i<=q;i++){
		if(ans[i]){
			cout<<"Yes\n";
		}
		else{
			cout<<"No\n";
		}
	}
	
	return 0;
}

标签:sheep,int,siz,2024,ss,id,cmp
From: https://www.cnblogs.com/sadlin/p/18410476

相关文章

  • NOIP2024集训Day27 DP常见模型4 - 树形
    NOIP2024集训Day27DP常见模型4-树形E.[COCI2014-2015#1]Kamp首先只考虑一个点,发现如果回到原来位置是比较好搞的,就每次走完子树的里面要的就上来,如果子树里面没有要走的就不走。(大概是\(f_x=\sumf_y+2\cdote_x\),因为要走过去走回来,注意\(y\)要保证子树里面有人)......
  • 2024年Java常见面试题整理
    1、java为什么要有包装类型?主要原因包括以下几点:处理基本数据类型的null值:基本数据类型(如int,double等)不能直接赋值为null,而包装类型(如Integer、Double)可以表示null值,这对于某些业务逻辑和数据处理来说非常有用。提供额外功能:包装类型提供了一些额外的方法和功能,这些......
  • 揭秘最全议程!2024云栖大会「云原生+AI」有哪些看点?
    ......
  • 【万象AI,安全新生】美洽献力2024国家网络安全宣传周-成都站
    9月11日,2024年国家网络安全宣传周成都系列活动拉开帷幕。本届活动以“网络安全为人民,网络安全靠人民”为主题,由成都市委宣传部、市委网信办、市经信局市新经济委、市教育局、市公安局、市文广旅局等十个部门联合举办。2024CCS成都网络安全大会作为核心活动之一在当天启动。大会以......
  • CTS2024 题解
    \(\text{ByDaiRuiChen007}\)D1T1.水镜ProblemLink给定\(a_1\sima_n\),求多少个\([l,r]\)满足存在实数\(L\),将若干个\(a_i\)变成\(2L-a_i\)后\(a_l\sima_r\)严格递增。数据范围:\(n\le10^6\)。考虑钦定\(i-1\)翻转/不翻转,\(i\)翻转/不翻转,容易发现......
  • 《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》Chapter 1课件2024
    每一轮备课都有新的感悟。禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》禹晶、肖创柏、廖庆敏《数字图像处理》资源二维码......
  • 【题解】Solution Set - NOIP2024集训Day27 树形 dp
    【题解】SolutionSet-NOIP2024集训Day27树形dphttps://www.becoder.com.cn/contest/5521「HDU4661」MessagePassing「BZOJ3935」Rbtree「ARC101E」RibbonsonTree「AGC034E」CompleteCompress「COCI2014.10」Kamp「SCOI2015」小凸玩密室「AGC008F」Black......
  • SMU Autumn 2024 Trial 1
    A.LoadBalancing很明显题意要的就是让我们把每个数往平均值靠,这样就保证最大值-最小值最小但是当sum%n!=0的时候就说明无法每个数都等于sum/n,所以处理的方法就是,先计算这些无法等于sum/n的个数cnt,再算出可以到达sum/n的次数n-cnt,然后算出总代价,再用总代价除以2就是答案,因为一......
  • 2024年市场营销人员需要了解的16个Snapchat用户数据
    Snapchat年龄分布Snapchat性别分布Snapchat收入分布Snapchat地理位置分布我们都知道每个Snapchat用户都是独特且珍贵的,但让一个普通的社交媒体经理了解应用程序的8亿月度活跃用户的全部情况实在是太难了。这时,Snapchat的人口统计数据就派上用场了。这些方便的数据让我......
  • 2024年金九银十最新版Java面试题及答案整理(持续更新)
    2024年金九银十到了,发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全~这套互联网Java工程师面试题包括了:MyBatis、ZK、Dubbo、EL、Redis、MySQL、并发编程、Java面试、Spring、微服务、Linux、Springboot、SpringCloud、MQ、Kafka面试专......