博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CF1009F】 Dominant Indices (长链剖分+DP)
阅读量:6600 次
发布时间:2019-06-24

本文共 1701 字,大约阅读时间需要 5 分钟。

\(O(n^2)\)\(DP\)很容易想,\(f[u][i]\)表示在\(u\)的子树中距离\(u\)\(i\)的点的个数,则\(f[u][i]=\sum f[v][i-1]\)

长链剖分。
\(O(1)\)继承重儿子的信息,再暴力合并其他轻儿子的信息,时间复杂度是线性的。
继承重儿子用指针实现,非常巧妙。

#include 
int xjc; char ch;inline int read(){ xjc = 0; ch = getchar(); while(ch < '0' || ch > '9') ch = getchar(); while(ch >= '0' && ch <= '9'){ xjc = xjc * 10 + ch - '0'; ch = getchar(); } return xjc;}const int MAXN = 1000010;struct Edge{ int next, to;}e[MAXN << 1];int head[MAXN], num, son[MAXN], len[MAXN], *f[MAXN], tmp[MAXN], *id = tmp, ans[MAXN], n;inline void Add(int from, int to){ e[++num].to = to; e[num].next = head[from]; head[from] = num; e[++num].to = from; e[num].next = head[to]; head[to] = num;}void dfs(int u, int fa){ for(int i = head[u]; i; i = e[i].next) if(e[i].to != fa){ dfs(e[i].to, u); if(len[e[i].to] > len[son[u]]) son[u] = e[i].to; } len[u] = len[son[u]] + 1;}void dp(int u, int fa){ f[u][0] = 1; if(son[u]) f[son[u]] = f[u] + 1, dp(son[u], u), ans[u] = ans[son[u]] + 1; for(int i = head[u]; i; i = e[i].next) if(e[i].to != fa && e[i].to != son[u]){ f[e[i].to] = id; id += len[e[i].to]; dp(e[i].to, u); for(int j = 1; j <= len[e[i].to]; ++j){ f[u][j] += f[e[i].to][j - 1]; if(f[u][j] > f[u][ans[u]] || f[u][j] == f[u][ans[u]] && j < ans[u]) ans[u] = j; } } if(f[u][ans[u]] == 1) ans[u] = 0;}int main(){ n = read(); for(int i = 1; i < n; ++i) Add(read(), read()); dfs(1, 0); f[1] = id; id += len[1]; dp(1, 0); for(int i = 1; i <= n; ++i) printf("%d\n", ans[i]); getchar();}

转载于:https://www.cnblogs.com/Qihoo360/p/9796962.html

你可能感兴趣的文章
NIS网络信息服务
查看>>
file - 确定文件类型
查看>>
Java 第一天
查看>>
我的友情链接
查看>>
常用的与正则表达式
查看>>
JAVA中的线程机制(二)
查看>>
Windows Server 2012下的文件迁移
查看>>
nginx安装与配置2(转载)
查看>>
Linux下Mongodb安装和启动配置
查看>>
冒泡排序与选择法排序
查看>>
SpringMvc (注解)中的上传文件
查看>>
【系列3】使用Dockerfile创建带编译安装nginx服务的Centos Docker镜像
查看>>
Oracle提高查询效率的方法
查看>>
我的友情链接
查看>>
***菜鸟要学会的几个cmd ddos命令
查看>>
【云大会】之五《第七届云计算大会 Day1感受:喧嚣退潮、人气萎缩》
查看>>
大数据与机器学习的一些博文整理
查看>>
Struts2中防止页面重复提交
查看>>
无需认证的mail,适用于ZABBIX等运维系统
查看>>
程序员必看的十大电影
查看>>