news 2026/4/18 3:42:35

Educational Codeforces Round 129 (Rated for Div. 2) F. Unique Occurrences 线段树分治

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Educational Codeforces Round 129 (Rated for Div. 2) F. Unique Occurrences 线段树分治

F. Unique Occurrences

time limit per test: 6 seconds

memory limit per test: 1024 megabytes

input: standard input

output: standard output


You are given a tree, consisting ofnnnvertices. Each edge has an integer value written on it.

Letf(v,u)f(v, u)f(v,u)be the number of values that appearexactly onceon the edges of a simple path between verticesvvvanduuu.

Calculate the sum off(v,u)f(v, u)f(v,u)over all pairs of verticesvvvanduuusuch that1≤v<u≤n1 \le v < u \le n1v<un.

DeepL 翻译:

给你一棵由nnn个顶点组成的树。每条边上都写有一个整数值。
假设f(v,u)f(v,u)f(v,u)是顶点vvvuuu之间简单路径的边上只出现一次的值的个数。
计算所有顶点vvvuuu之间的f(v,u)f(v,u)f(v,u)1≤v<u≤n1 ≤ v < u ≤ n1v<un

把每种颜色看为时间轴上的事件,进行分治处理。

简单来讲,我们用线段树分治,对于每种颜色全部删除后的树上的 dsu 进行统计,很显然,此时某一条边的贡献就是 左右两个连通块的大小的乘积,然后再把这种颜色的边加回来,再进行下一条边的枚举。

总的复杂度只有 n log n

vector<tuple<int,int,int>>e;vector<vector<PII>>col;intans;structop{intt,a,b;};classDSU{public:vector<int>f,siz;stack<op>save;DSU(){}DSU(intn){init(n);}voidinit(intn){f.resize(n+1);iota(range(f),0);siz.assign(n+1,1);}intfind(intx){returnf[x]==x?x:find(f[x]);}boolsame(intx,inty){returnfind(x)==find(y);}boolmerge(intx,inty){x=find(x);y=find(y);if(x==y){return0;}if(siz[x]>siz[y]){swap(x,y);}save.push({1,x,y});siz[y]+=siz[x];f[x]=y;returntrue;}voidrollback(){auto[t,x,y]=save.top();save.pop();if(t==1){siz[y]-=siz[x];f[x]=x;}else{}}size_tgetSnapshot()const{returnsave.size();}voidroll(inttar){while(save.size()>tar){rollback();}}intsize(intx){returnsiz[find(x)];}};template<typenameT>classSegmentTreeDC{public:inttot;// 时间点数(叶子数量)vector<vector<T>>tr;// 每个节点的操作列表SegmentTreeDC():tot(0LL){}SegmentTreeDC(int_T){init(_T);}voidinit(int_T){tot=max(1LL,_T);tr.clear();tr.resize(4LL*(tot+5));}// 插入一个操作 op 到闭区间 [l, r]voidinsert(intp,intL,intR,intl,intr,constT&op){if(l>r||l>R||r<L)return;if(l<=L&&R<=r){tr[p].push_back(op);return;}intmid=L+R>>1;insert(p<<1,L,mid,l,r,op);insert(p<<1|1,mid+1,R,l,r,op);}voidinsert(intl,intr,constT&op){if(l>r)return;insert(1,1,tot,l,r,op);}voiddfs(DSU&dsu){function<void(int,int,int)>dfs=[&](intp,intl,intr){size_t snap=dsu.getSnapshot();for(auto&e:tr[p]){dsu.merge(e.first,e.second);}if(l==r){for(auto[u,v]:col[l]){ans+=dsu.size(u)*dsu.size(v);}}else{intmid=(l+r)>>1;dfs(p<<1,l,mid);dfs(p<<1|1,mid+1,r);}dsu.roll(snap);};dfs(1,1,tot);}};voidsolve(){intn;cin>>n;e.resize(n+1);col.resize(n+2);for(inti=1;i<n;i++){intu,v,w;cin>>u>>v>>w;e[i]={u,v,w};col[w].push_back({u,v});}DSUdsu(n);SegmentTreeDC<PII>seg(n);for(inti=1;i<n;i++){auto&[u,v,w]=e[i];seg.insert(1,w-1,{u,v});seg.insert(w+1,n,{u,v});}seg.dfs(dsu);cout<<ans<<endl;}signedmain(){cin.tie(nullptr)->ios::sync_with_stdio(false);intT=1;// cin >> T;for(;T_<=T;T_++)solve();return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 21:50:04

SharedPreferences

SharedPreferencesSharedPreferences是一个接口&#xff0c;需通过Context提供的getSharedPreferences(String name,int mode)方法来获取SharedPreferences实例。SharedPreferences数据总是保存在/datta/data/<package name>/shared_prefs目录下。SharedPreferences数据总…

作者头像 李华
网站建设 2026/4/16 17:57:41

vue.3

1.局部注册只能在注册的组件内使用&#xff08;1&#xff09;创建vue文件&#xff08;2&#xff09;在使用的组件内导入并注册2.全局注册所有组件内都能使用&#xff08;1&#xff09;创建vue文件&#xff08;2&#xff09;main.js中进行全局注册3.组件的样式冲突scoped全局注册…

作者头像 李华
网站建设 2026/4/17 7:45:22

centos7-nvidia驱动安装及简单测试

centos7-nvidia驱动安装类别信息服务器型号Rack Mount Chassis NF5280M6CPUIntel Xeon Silver 4310 CPU 2.10GHz * 2系统版本Centos 7系统内核版本3.10.0-1160.el7.x86_64GPU型号NVIDIA A100&#xff08;40G&#xff09;*4Nvidia版本525.85.05CUDA版本12.0.0docker版本20.10.9…

作者头像 李华
网站建设 2026/4/16 22:27:14

BUCK-BOOST升降压电路Multisim电路仿真分析

目录 0 概述 工作过程简述 Q1 导通阶段 Q1 关断阶段 稳态输出 主要元件作用 电路特点 1 过程分析: 第一次开关闭合时 第二次Q1闭合时C1放电 2 Multisim仿真分析 占空比D=25% 占空比D=60% 摘要 本文分析了三极管型BUCK-BOOST升降压开关电源的工作原理。该电路结…

作者头像 李华
网站建设 2026/4/17 8:45:53

内存固态等大幅涨价的优势是什么?

原本电子垃圾又有了些许价值升华。 排名上升 现在有部分旧电脑重新启用。看大数据的排名结果&#xff1a; https://blog.csdn.net/ZhangRelay/article/details/155345614 这是去年&#xff0c;2025年11月28日测试的结果&#xff0c;2%排位&#xff0c;非常低端了。 预料之中的…

作者头像 李华