解题报告:luogu P2342 & P5092
题目链接:P2342 [USACO04OPEN]Cube Stacking G
双倍经验:P5092 [USACO04OPEN]Cube Stacking
裸的加权并查集,直接维护下就好了,不过还是犯了SB错误,和lhr大佬一起沦为18pts。
在询问的时候同步更新一下f[x]及相关内容,保证是最新的。
复杂度应该是O(nα(n))的吧(唉,说好下个加权并查集讲经验的呢?算了,太水了,遇到难题时再说吧)。
Code:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int MAXN=30005;
int num[MAXN],f[MAXN],dis[MAXN];
void init(int maxx){for(int i=1;i<=maxx;i++) dis[i]=0,f[i]=i,num[i]=1;}
int getf(int u)
{
if(f[u]==u) return u;
else
{
int now=f[u];
f[u]=getf(f[u]);
num[u]=num[f[u]];
dis[u]+=dis[now];
}
return f[u];
}
void merge(int u,int v)
{
int t1=getf(u),t2=getf(v);
if(t1!=t2)
{
f[t2]=t1;
dis[t2]=num[t1];
num[t1]+=num[t2];
num[t2]=num[t1];
}
return;
}
int p;
char c;
int x,y;
int main()
{
scanf("%d",&p);
init(30000);
for(int i=1;i<=p;i++)
{
cin>>c;
if(c=='M')
{
scanf("%d%d",&x,&y);
merge(y,x);
}
else
{
scanf("%d",&x);
getf(x);//kel,注意就好了
printf("%d\n",dis[x]);
}
}
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用