题意

给定一棵 n n n 个结点的树,共有 q q q 次询问。

第 i i i 次询问首先包含了三个数 k i , m i , r i k_i,m_i,r_i ki​,mi​,ri​ ,接着给定了树上互不相同的 k i k_i ki​ 个关键点 a i , 1 , a i , 2 , … , a i , k a_{i, 1}, a_{i, 2}, \dots, a_{i, k} ai,1​,ai,2​,…,ai,k​ 。对于第
i i i次询问,你需要回答当这棵树以 r i r_i ri​ 为根时,你有多少种方案将这 k i k_i ki​ 个点分为至多 m i m_i mi​ 组,使得同一组内的任意两个不同的结点都不存在祖先关系。

对于第 i i i 次询问,假设你一共将 k i k_i ki​ 个点分成了 p p p 组,那么分组的方案需要满足:

  • 给出的 k i k_i ki​ 个点中每个点属于且仅属于 p p p 组中的其中一组。
  • p p p 组中的任意一组都要至少包含一个结点。

对于第 i i i 次询问,两个分组的方案不同,当且仅当它们分出的组数不同,或者存在两个点 a i , x , a i , y ( x ≠ y ) a_{i, x}, a_{i, y}(x \neq y) ai,x​,ai,y​(x​=y) ,它
们在其中一种分组方案中被分到了同一组,在另一种分组方案中没有被分到同一组。
数据范围:
对于 20% 的数据, n ≤ 10 , ∑ k i ≤ 20 , m i ≤ min ⁡ ( 4 , k i ) n \leq 10, \sum k_{i} \leq 20, m_{i} \leq \min \left(4, k_{i}\right) n≤10,∑ki​≤20,mi​≤min(4,ki​) ;

对于 60% 的数据, n ≤ 1 0 4 , ∑ k i ≤ 1 0 4 , m i ≤ min ⁡ ( 50 , k i ) n \leq 10^{4}, \sum k_{i} \leq 10^{4}, m_{i} \leq \min \left(50, k_{i}\right) n≤104,∑ki​≤104,mi​≤min(50,ki​) ;

对于另外 20% 的数据,保证第 i i i 条边是 ( 1 , i + 1 ) (1,i+1) (1,i+1) ,并且对于每个询问 r i = 1 r_i=1 ri​=1;

对于 100% 的数据, n ≤ 1 0 5 , q ≤ 1 0 5 , ∑ k i ≤ 1 0 5 , 1 ≤ u , v ≤ n n \leq 10^{5}, q \leq 10^{5}, \sum k_{i} \leq 10^{5}, 1 \leq u, v \leq n n≤105,q≤105,∑ki​≤105,1≤u,v≤n 。

对于每个询问, 1 ≤ k i , r i ≤ n , 1 ≤ m i ≤ min ⁡ ( 300 , k i ) 1 \leq k_{i}, r_{i} \leq n, 1 \leq m_{i} \leq \min \left(300, k_{i}\right) 1≤ki​,ri​≤n,1≤mi​≤min(300,ki​)。

题解

考场:
只会直观的DP,记 f [ i ] [ j ] f[i][j] f[i][j]为 i i i子树内分成 j j j组的方案数,转移时枚举、容斥一下,但效率是 O ( n × m 2 ) O(n\times m^{2}) O(n×m2)的,就算用虚树优化也过不了,于是只拿了60的暴力。
正解:
若直接在树上做,难以避免枚举子树分成几组,转移时效率不优秀。
故考虑能否每次只加入一个点。发现若按照一定顺序一个个加入点,记 f [ i ] [ j ] f[i][j] f[i][j]为前 i i i个分为 j j j组,则每次转移为 f [ i ] [ j ] = f [ i − 1 ] [ j − 1 ] + f [ i ] [ j − 1 ] × x f[i][j]=f[i-1][j-1]+f[i][j-1]\times x f[i][j]=f[i−1][j−1]+f[i][j−1]×x,十分优秀。考虑 x x x怎么算,对于不能有祖先关系,只考虑后代不能放到祖先的集合,即每个点加入时,不能放到有它的祖先的集合,而此时它的祖先已全都加入,且一定在不同集合内,于是直接减去祖先个数即可。而对于加入点的顺序,考虑若在一颗树上,则按照深度顺序,那么对于一个根和一些关键点,即为它到根的路径上关键点的个数,整个过程用树状数组维护即可。

(CSP2019模拟)DTOJ 4624. 树相关推荐

  1. 手绘与码绘的比较---模拟风吹树动

    手绘与码绘的比较-模拟风吹树动 一.内容介绍 本文主要介绍用手绘和码绘两种方式模仿一种自然现象–风吹树动的过程,以及在实现过程对这两种方式的比较和思考.之所以选择风吹树动,是因为每次速写画一些场景时( ...

  2. (CSP2019模拟)DTOJ 4650. 暗雪

    题意 有nnn个物品,其中有一个是特殊的,每个物品有pip_ipi​的概率是特殊的.每次可以询问一个集合是否有特殊物品,要求在kkk次询问内找出,且期望询问次数最少. 题解 先把题意转换为:构造一颗深 ...

  3. (CSP2019模拟)DTOJ 4646. block

    题意 给定 nnn 个点,每个点有两个属性 valueivalue_ivaluei​ 和 keyikey_ikeyi​ 表示这个点的权值和关键字.要求将这 nnn 个点排成一个序列,满足 ∀1≤i≤n ...

  4. (CSP2019模拟)DTOJ 4632. 隐蔽的居所

    题意 在小G的家乡,有很多人住在一个大湖的边上. 他告诉小D,这个大湖可以被视作一个圆.一共有 NNN 户人家, 他们住在这个圆的 NNN 等分点上,每个 NNN 等分点上恰好有一户人家. 这里的每户 ...

  5. 【2018.12.15】【考试总结】【模拟+逆序对+树状数组+贪心+multiset】爆零之旅

    这是我悲惨的接近爆零的一次考试,但是本蒟蒻不能放弃,还是要总结的QAQ 答题卡 [题目背景] 八月是个悲惨的月份.先不谈炎热的天气,对于新生来说,八月意味着军训: 而对于高二高三的同学来说,八月意味着 ...

  6. 【dfs】【模拟】【树】I Like Matrix Forever!

    I Like Matrix Forever! 题目大意: 有一个01矩阵,有一些操作:反转一个位置的数,反转一行的数,反转一列的数,回到第i次操作,每一次操作还要输出1的个数 原题: 题目描述 对一个 ...

  7. Day10 堆排序、模拟堆 trie树(字典树) 并查集

    堆呢就是一棵树完全二叉树... 小根堆的话,根节点就是最小值 维护堆只有两个操作 up(k) down(k) cnt是堆的大小 建堆的话只需要把前n/2的数down下来就ok 复杂度是小于O(n) 的 ...

  8. 旧金山大学模拟数据库B+树维护过程

    在翻看网络资料时无意中发现的一个有趣的小作品,由旧金山大学制作的模拟数据库B+Tree的存储维护过程,可以用来更直观的了解数据库的索引过程和树的概念 B+ Tree Visualization htt ...

  9. 【NOIP模拟】彩色树【树形dp】【树链剖分性质】【复杂度分析】

    题意:一棵初始时为空的树,依次加入 nnn 个叶结点,每次加入后询问 用若干不同颜色的路径将树边染色后 每个点到根经过的颜色数 的最大值 的最小值. n≤106n\leq 10^6n≤106 首先发现 ...

最新文章

  1. Android关于绘图中Shader 的效果(中级)
  2. js中继承的几种用法总结(apply,call,prototype)
  3. Selective Search
  4. 头插法建立单链表学习总结
  5. access建立两个字段唯一索引_数据库索引原理及优化
  6. python读写文件错误_Python读取csv文件错误解决方法
  7. CSS3动画大全(附源码)flex布局,grid布局3d旋转,图像模糊,文字发光
  8. linux下kegg注释软件,KEGG功能注释工具 KofamKOALA 安装与使用
  9. Centos eclipse打开文件自动退出
  10. 面试题 01.03. URL化
  11. 人工智能实战_第八次作业_手写数学式子识别_廖盈嘉
  12. OLTP和OLAP的区别
  13. SAP License:FICO重要概念(二)-附常用技巧
  14. 关注的计算机视觉研究组和个人主页列表
  15. android 15 activity跳转
  16. 计算机主页为什么打不开怎么办,主页被限制,打不开怎么办?
  17. 一个简单的完全信息动态博弈的解答
  18. 算法分析与设计——分治法实验报告
  19. 实时互动白板_使用froala文本编辑器构建实时协作白板第1部分
  20. 人在年轻的时候,最核心的能力是什么?-复利(转自知乎)

热门文章

  1. DHT11(温湿度传感器)的学习
  2. 浏览器主页被篡改,修改注册表也不能改回来!
  3. H265码流分析详解
  4. 设置了快速启动栏无法显示
  5. Echarts环形图--自定义图例文本和中心文字
  6. 加强教育专网建设,助推教育新基建发展
  7. ipcs 查看IPC 对象信息
  8. 正态分布与中心极限定理
  9. nginx 如何缓存和清理
  10. Android Studio 实现音乐播放器