CF486D Valid Sets
2021/10/15 6:15:01
本文主要是介绍CF486D Valid Sets,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
CF486D Valid Sets
题意:
给出一棵有点权的树,求这棵树的满足极差 \(\leqslant k\) 连通子图的个数 ( 点数 \(n \leqslant 2000\) ) 。
解法:
由于点数 \(n \leqslant 2000\) ,所以我们考虑构造一个 \(O(n^2)\) 的算法:
遍历 \(i = 1 .. . n\) , 以 \(i\) 为根 \(dp\) 。
令 \(f_i\) 表示包含点 \(i\) 的极差 \(\leqslant k\) 的连通子图个数。那么转移方程就为: \(f_u += f_u \cdot f_v\) 。
那么如何不重不漏地遍历 \(f_v\) 呢。我们指定 \(a_i\) 为这个集合里最大的点权,所以我们遍历的时候只需要遍历点权在 \(a_i - k\) ~ \(a_i\) 的点就行了。而如果 \(a_v = a_i\) , 我们就只在编号 \(i > v\) 时遍历 \(v\) 。
时间复杂度:
\(O(n^2)\) 。
Code
这篇关于CF486D Valid Sets的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享