尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Nov 12

Nov 12
📅 发布时间:2026/6/17 21:05:18

今天爆 0 了,没有什么好讲的,技不如人罢了。感觉自己需要放假。

T1 CF2117F

场上想出来了一半。

首先明显的,最多有两个叶子节点。

我于是尝试按照有几个叶子进行讨论。

如果只有一个叶子,说明这个图就是一条链。

我们这个时候随便填,因为链的结构,我们的 s 是从小往上单调不降的。

之后再考虑 “人” 字型的结构,我们发现两个子节点分别是 1/2 一共有两种情况,且如果一个一个往上填,距离两个的 lca 近的那个到 lca 只能放满 2, 另一个对应的也会有一部分是 2, lca 上边就是之前的情况了。

我们分别讨论最长链的叶子放的是 1/2,如果是 2,我们下一个必须是 2, 如果是 1 就无所谓。

直接列式子求就行了。

代码↓

点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7;
const int MN=1e6+116;
struct Node{int nxt, to;
}node[MN];
int head[MN], tottt;
int siz[MN], n;
int quick_power(int a, int b){int res=1;while(b){if(b&1) res=(res*a)%mod;a=(a*a)%mod; b>>=1;}return res;
}
void insert(int u, int v){node[++tottt].to=v;node[tottt].nxt=head[u];head[u]=tottt;
}
int lca_len;
vector<int> lens;
void dfs(int u,int fa,int dep){int deg=0;for(int i=head[u];i;i=node[i].nxt){int v=node[i].to;if(v==fa) continue;deg++;dfs(v,u,dep+1);}if(deg>1) lca_len=dep;if(deg==0) lens.push_back(dep);
}
void Solve(){cin>>n; tottt=0;for(int i=1;i<=n;++i) head[i]=0;for(int i=1;i<n;++i){int u,v; cin>>u>>v;insert(u,v); insert(v,u);}lens.clear(); lca_len=0;dfs(1,0,1);if((int)lens.size()>2){cout<<0<<'\n';return;}if((int)lens.size()==1){cout<<quick_power(2,n)<<'\n';return;}int diff=abs(lens[0]-lens[1]);if(diff==0){cout<<quick_power(2,lca_len+1)%mod<<'\n';}else{cout<<(quick_power(2,lca_len+diff-1)+quick_power(2,lca_len+diff))%mod<<'\n';}return;
}
signed main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T; cin>>T;while(T--) Solve();return 0;
}

T2 CF2117G

这个就是一道正正常常的图论题。

从小到大加边,这个时候我们每加一条就是最大值,并查集维护 1 到 n 有没有联通和联通快的最小边权,每次如果联通取答案就行了。

代码↓

点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MN=1e6+116;
const int inf=0x3f3f3f3f3f3f3f3f;
struct DSU{int father[MN], minn[MN];void init(int n){for(int i=0; i<n+1; ++i) father[i]=i;for(int i=0; i<n+1; ++i) minn[i]=inf;}int find(int x){if(father[x]!=x) father[x]=find(father[x]);return father[x];}void merge(int u, int v, int w){u=find(u), v=find(v);minn[u]=min(min(minn[u],minn[v]),w);father[v]=u;}
}dsu;
int n, m;
struct Side{int u, v, w;bool operator <(const Side &o)const{return w<o.w;}
};
vector <Side> side;
void Read(){cin>>n>>m; dsu.init(n); side.clear();for(int i=1; i<=m; ++i){int u, v, w; cin>>u>>v>>w;side.push_back({u,v,w});}sort(side.begin(),side.end());return;
}
void Solve(){Read(); int ans=inf;for(auto tmp:side){dsu.merge(tmp.u,tmp.v,tmp.w);if(dsu.find(1)==dsu.find(n)){ans=min(ans,tmp.w+dsu.minn[dsu.find(1)]);break;}}cout<<ans<<'\n';return;
}
signed main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T; cin>>T; while(T--) Solve();return 0;
}

相关新闻

  • 【日记】解决了一个人际冲突,但耳机怕是永远找不回来了(1344 字)
  • 手写汉字识别准确率
  • 2025年诺士诚公司:全过程工程咨询资质全景深度解析

最新新闻

  • 如何配置stock-scanner数据源:AkShare数据获取与优化终极指南
  • 同一人公证书在国内可以办理吗?同一人公证书在国内怎么操作?解析身份 - 指上通
  • Exchange-AD-Privesc修复脚本详解:如何快速检测和修复Exchange部署中的Active Directory安全漏洞
  • 应用层核心(一):从FTP到DNS的进阶指南
  • 毕节黄金回收指南:六家靠谱店铺推荐,让闲置安心变现 - 清奢黄金上门回收
  • AI炒股不是预测股价,而是校准认知:信息保真度实战指南

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号