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

CF1009F Dominant Indices - crazy-

dsu-on-tree,双端队列

题意

给定一棵有 \(n\) 个顶点的有根树,以顶点 \(1\) 作为根。

定义顶点 \(x\) 的深度数组为一个无限序列 \([d_{x, 0}, d_{x, 1}, d_{x, 2}, \dots]\),其中 \(d_{x, i}\) 表示满足以下两个条件的顶点 \(y\) 的数量:

  • \(x\)\(y\) 的祖先;
  • \(x\)\(y\) 的简单路径恰好经过 \(i\) 条边。

对于每个 \(x\),求 \(\max d_{x,i}\)

\(1 \le n \le 10^6\)

题解

考虑对于节点 \(u\) 的儿子 \(v\),在 \(d_v\) 的前面插入一个 \(0\) 就是其对 \(u\) 的贡献。

用 deque 维护,dsu-on-tree 暴力更新即可,时间复杂度 \(O(n\log n)\),常数可能会比较大。

代码

#include<bits/stdc++.h>
// #define int long long
using namespace std;
const int Maxn=1e6+10;
vector<int>edge[Maxn];
int sz[Maxn],h[Maxn];
int ans[Maxn];
int n;
void dfs1(int u,int fa=0)
{sz[u]=1;for(int v:edge[u]) if(v!=fa){dfs1(v,u);if(sz[v]>sz[h[u]]) h[u]=v;sz[u]+=sz[v];}
}
deque<int>dfs2(int u,int fa=0)
{if(!h[u]){deque<int>re;re.push_front(1);return re;}deque<int>q=dfs2(h[u],u);q.push_front(1);ans[u]=ans[h[u]]+1;if(q[0]>=q[ans[u]]) ans[u]=0;for(int v:edge[u]) if(v!=fa && v!=h[u]){deque<int>tmp=dfs2(v,u);tmp.push_front(0);while(q.size()<tmp.size()) q.push_back(0);for(int j=0;j<tmp.size();j++){q[j]+=tmp[j];if(q[j]>q[ans[u]] || (j<ans[u] && q[j]==q[ans[u]])) ans[u]=j;}}return q;
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<n;i++){int u,v;cin>>u>>v;edge[u].push_back(v);edge[v].push_back(u);}dfs1(1);dfs2(1);for(int i=1;i<=n;i++) cout<<ans[i]<<endl;return 0;
}
http://www.jsqmd.com/news/88899/

相关文章:

  • 教程8:结构体的添加和使用-–-behaviac
  • 蓄电池与超级电容器混合储能并网的Simulink仿真探索
  • macOS 的两款好用的免费截图软件: shottr 和 snipaste
  • 教程9:枚举的添加和使用-–-behaviac
  • QSharedMemory 变量在对象析构的时候要怎么处理
  • TikTok达人合作订单太繁琐?影刀RPA一键智能处理,效率飙升10倍![特殊字符]
  • 投机推理原理及设计
  • 前端保存用户登录信息 深入全面讲解
  • 影刀RPA颠覆传统!TikTok售后工单智能处理,效率提升500%[特殊字符]
  • 【开题答辩全过程】以 基于PHP的乐高学习网站管理系统的设计实现为例,包含答辩的问题和答案
  • 【Java毕设全套源码+文档】基于springboot的高校大学生心理咨询管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 异步SAR Simulink模型及其在MATLAB仿真中的应用
  • 【开题答辩全过程】以 基于Node.js的医院预约挂号系统为例,包含答辩的问题和答案
  • vue基于Spring Boot框架的在线电影票购买系统的设计与实现_8xxt52nn
  • 学完这个C++内存池案例,你对内存管理的理解将超越大部份人
  • Cplusplus生成代码大小的说明-–-behaviac
  • 手把手拆解三菱PLC印字机实战项目
  • 【免费领源码】Python/Mysql数据库+53824中国传统服装微信小程序的设计与实现+ 计算机毕业设计项目推荐上万套实战教程JAVA、PHP,node.js,C++、python、大屏数据可视化
  • 开发功能开关-–-behaviac
  • 三菱PLC组装机学习笔记
  • Go 语言结构体
  • 当卷积网络遇上双向记忆:玩转时间序列预测新姿势
  • 【开题答辩全过程】以 高校篮球社团管理系统 为例,包含答辩的问题和答案
  • JavaScript闭包终极指南:从原理到实战(2025版)
  • 【开题答辩全过程】以 基于PHP的公司员工管理系统为例,包含答辩的问题和答案
  • 第八周学习
  • Week 29: 深度学习补遗:MoE的稳定性机制与路由策略实现
  • 有关C语言中自加和自减与计算机底层硬件的关糸
  • Arbess从初级到进阶(3) - 利用Arbess+GitLab+SonarQube搭建Java计划自动化部署
  • 告别机房管理噩梦,首码磁控U位系统来“救场”