当前位置: 首页 > news >正文

随笔 7

【YER #1】城市建设

\(n\) 个城市,每个城市有一个权重 \(w_i\)。每天会新修一条铁路,连接两个城市。定义某天的“交通量” \(=\) 所有能互相到达的城市对的 \(w_i×w_j\) 之和。

给你 \(q\) 个询问,问第 \(t\) 天的交通量。


考场上面没注意写错了一个地方,导致复杂度炸了100->50pts,非常愤怒。

很容易想到每一次修铁路用并查集维护联通块,发现只有修完铁路答案才有变化,那就把修完这条铁路的答案记下来,最后询问时二分找到在询问时间前修建的铁路的答案即可。

/*
先把铁路修建按时间排序,枚举m个时间点t,保存此时的答案
我们枚举点,计算以这个点为根的连通块的贡献,容易发现(w1+w2+...+wn)^2-(w1^2-w2^2...)=2(w1w2+w1w3+w1w4......) 
询问时对于t,找到铁路修建时间x,y,使得x<=t<y,给出保存过的x时间时的答案  
*/#include<bits/stdc++.h>
using namespace std;
#define int long long
int w[100010];
struct node{int t,a,b;
}a[100010]; 
bool cmp(node a,node b) {return a.t<b.t;
}
int tt[100010],cnt; 
int fa[100010],sum[100010],sum2[100010],ans[100010];
int find(int x) {if(fa[x]==x) return x;return fa[x]=find(fa[x]);
} 
int tmp;
void join(int a,int b) {int aa=find(a),bb=find(b);if(aa!=bb) {tmp-=(sum[aa]*sum[aa]-sum2[aa])/2;//把原来的去掉 tmp-=(sum[bb]*sum[bb]-sum2[bb])/2;fa[bb]=aa;sum[aa]+=sum[bb];sum2[aa]+=sum2[bb];tmp+=(sum[aa]*sum[aa]-sum2[aa])/2;}
}
signed main() {ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int n,m,q;cin>>n>>m>>q;for(int i=1;i<=n;i++) {cin>>w[i];}for(int i=1;i<=m;i++) {cin>>a[i].t>>a[i].a>>a[i].b;}sort(a+1,a+1+m,cmp);
//	for(int i=1;i<=m;i++) {
//		cout<<a[i].t<<"\n";
//	}for(int i=1;i<=m;i++) {if(a[i].t!=a[i-1].t) {tt[++cnt]=a[i].t;}}for(int i=1;i<=n;i++) {fa[i]=i;sum[i]=w[i];sum2[i]=w[i]*w[i];}int last=1;//不要重复join! 100->50!!! for(int i=1;i<=cnt;i++) {for(int j=last;j<=m&&a[j].t<=tt[i];j++) {join(a[j].a,a[j].b);last=j;}ans[i]=tmp;}while(q--) {int t;cin>>t;int l=1,r=cnt,pos=0;while(l<=r) {int mid=(l+r)>>1;if(tt[mid]<=t) {pos=mid;l=mid+1;}else r=mid-1;}cout<<ans[pos]<<"\n";}return 0;
} 
http://www.jsqmd.com/news/425443/

相关文章:

  • 2026.3.1省选模拟赛
  • Seal Plus 2.2.0 | 开源视频下载器,支持1000+视频平台
  • 彼得林奇的“质量成长“vs“价值陷阱“
  • 多智能体系统如何评估公司的长期盈利能力
  • Musify 9.8.4 | 纯净无广免费音乐软件, 畅听国内外歌曲, 需要特殊网络
  • 虚拟展厅AI训练数据从哪来?架构师设计高效数据标注平台实践
  • 全面了解:提示工程师职业认证体系,提示工程架构师的职业指南书
  • AI原生应用领域联邦学习的性能评估指标
  • PowerShell 新建 SharePoint Online 列表
  • 基于springboot框架的火车票购票系统_33bx0nk0
  • 基于springboot框架的航班查询与推荐系统飞机订票系统设计与开发_d1b11p63
  • 有源电力滤波器Matlab仿真之旅
  • [vue3入门]HTML Learn Data Day 7
  • 重庆有哪些招聘平台?2026本地求职招工平台全攻略
  • 独立主格
  • ClawCon 2026:AI智能体从虚拟走向物理的里程碑
  • [vue3 入门]HTML Learn Data Day 7
  • Ubuntu server 24.04 LTS 初始配置记录(二、配置远程登录)
  • 超音速原理:从激波到尖端科技
  • 为什么谁先发送低电平谁就掌握对总线的控制权
  • 超声相控阵波束合成实战代码
  • 使用trae开发工具对某书屋项目进行接口自动化测试
  • 基于STM32DSP库与MATLAB的数字滤波器设计与实现
  • P1894 [USACO4.2] 完美的牛栏The Perfect Stall 题解
  • Bootstrap4 面包屑导航
  • G008 【模板】树的重心 带权重心 DFS P1670 P1395 P2986 洛谷
  • 行走人间・第二篇:生活
  • 基于springboot的健身服务管理系统
  • Web 词汇表
  • 3mm 厚层 CT 冠脉配准踩坑实录:从血管碎裂、空间漂移到 Elastix 完美对齐