质因数分解套路的复杂度分析的动态规划

题目大意

有一颗$n$个节点有点权的树,初始整棵树为$1$号区域,要求满足下列规则:

  • 除非$i$是最后一个等级,否则每一个$i$级区域都要被分成至少两个$i+1$级区域
  • 对于每种等级,每个点必须恰好属于一个区域
  • 一个区域的点集必须是连通的
  • 对于相同等级,每个区域必须拥有相同的点权和

问有多少种合法的划分方案,$n \le 10^6,a_i \le 10^9$.


题目分析

首先考虑判断把树分为$k$个2级区域的合法性$f_k$,记点权和为$tot$。

一种朴素的想法就是对于每一个$k$,自底向上遍历整棵树,若剩余子树大小恰好为$tot\over k$,就割去这颗子树;如果整棵树能够被处理完,$k$就是合法的。每次判定复杂度为$O(n)$.

注意到这个想法里,每次割去子树的大小$s_i$恰好是$tot\over k$的倍数;并且不难发现,$k$合法的充要条件就是恰有$k$个$s_i≡0(\text{mod }\frac{tot}{k})$。简短解释一下:对于一颗$s_i≡0(\text{mod }\frac{tot}{k})$的子树,由于它的所有子树都奉行割去$s_j≡0(\text{mod }\frac{tot}{k})$的原则,那么剩下的包括点$i$的连通块就是$i$子树内最小的$\ge {tot\over k}$的连通块。因此,$\sum [s_k≡0(\text{mod }\frac{tot}{k})] \le k$;并且当且仅当$=k$时合法。

有了这个性质,考虑如何统计$f_k$。容易发现对于合法的$k$,$\frac{tot}{k}$的任意约数$k'$都是合法的。而对于子树$s_i$,其最小有贡献的$k=\frac{tot}{\text{gcd}(s_i,tot)}$。所以这里只需要对每个$s_i$存下最小的合法$k$,再以质因数分解题的套路处理一遍就能算出$[f_k=k]$了。因此处理$f_k$的复杂度是$O(n\ln n)$。

接下去考虑dp计算把整棵树分为若干个$i$级区域的方案数$g_i$。

转载于:https://www.cnblogs.com/antiquality/p/10692714.html

【动态规划】cf1034C. Region Separation相关推荐

  1. Codeforces Round #511 (Div. 1) 题解

    在学校熬夜打$cf$找死啊. A - Enlarge GCD 先求个$gcd$,然后对于每个$a[i]$都除以$gcd$. 之后我们只需要统计每个质数整除的个数即可. 因为带上所有数的$gcd$一定是 ...

  2. 论文阅读:Automatic Detection and Classi cation of Teeth in CT Data

    [论文信息] MICCAI 2012 会议论文 文章实现了中全自动的牙齿检测和分类,对象为CBCT/MSCT,实验数据集是43套临床头部CT图像. 主要是两个步骤: 1. 分割上颌骨: 2. 分成16 ...

  3. 强化学习-动态规划_强化学习-第5部分

    强化学习-动态规划 有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) These are the lecture notes for FAU's Yo ...

  4. 科罗拉多大学波尔得分校计算机科学,科罗拉多大学波尔得分校副教授Dan Zhang:基于线性规划的近似动态规划方面的一些最新成果...

    科罗拉多大学波尔得分校副教授Dan Zhang:基于线性规划的近似动态规划方面的一些最新成果 [主讲]科罗拉多大学波尔得分校副教授Dan Zhang [题目]基于线性规划的近似动态规划方面的一些最新成 ...

  5. cell 发布 Phase separation 研究指南

    转自: https://mp.weixin.qq.com/s/2YAtRPbGyY5APKvBOCz8NA 细胞是生物体结构和功能的基本单位,细胞内的各种组分如何在正确的时间以及空间上聚集以执行其相应 ...

  6. 算法洗脑系列(8篇)——第七篇 动态规划

    今天跟大家分享下算法思想中比较难的一种"动态规划",动态规划给人像是作战时常用的"迂回战术",或者说是 游击战,在运动中寻找突破口. 一: 思想 首先要了解&q ...

  7. 伍六七带你学算法 动态规划 ——不同路径

    力扣 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格 ...

  8. 由动态规划计算编辑距离引发的思考

    简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...

  9. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

最新文章

  1. 马化腾公开信:AI将成为基础设施,腾讯要打造“数字生态共同体”
  2. 演示:动态路由协议RIPv1的配置
  3. SAP Commerce Cloud 项目 Spartacus 入门
  4. python format 冒号_python之格式化输出
  5. 8 9区别 endnote7_EndNote_9__简明教程_中文版
  6. python正交表结果生成
  7. win10中 有道词典不能联网/发音解决方法
  8. 中文姓名笔画计算(VBS脚本版)
  9. js为li列表添加点击事件
  10. spring cloud系列eureka
  11. 微信小程序---倒计时
  12. 手机开机启动慢是什么原因_手机开机慢,详细教您手机开机慢怎么办
  13. 《笨方法学python》习题43分析
  14. 初学者古琴入门知识——【唐畅古琴】
  15. 宝塔Linux面板的安装配置以及基本使用教程(超详细)
  16. 索尼电视linux系统版本,索尼X9500H智能液晶4K电视加入最新安卓9.0操作系统
  17. Acrobat Pro DC 教程:如何编辑 PDF 文件中的文本和图片?
  18. NVIDIA最全马甲对照表
  19. [Javascript]:BOM对象详解和BOM与DOM的层次关系
  20. 小猪的Python学习之旅 —— 18.Python微信转发小宇宙早报

热门文章

  1. mysql5.0 php_php怎么连接mysql5.0?
  2. spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3. html转excel有问题,html转excel
  4. Qt 进程使用 使用当前进程启动另外进程
  5. 计算机网络:TCP和UDP的对比
  6. CSS实现垂直居中的5种方法
  7. java 日期calendar_java时间对象Date,Calendar和LocalDate/LocalDateTime
  8. php渲染视图,Laravel 视图渲染:Blade 模板引擎
  9. java replaceall 大小写_Java replaceAll不区分大小写
  10. python有哪些常用的库