首页 > 其他分享 >[ZJOI2016] 小星星

[ZJOI2016] 小星星

时间:2025-01-06 10:13:52浏览次数:7  
标签:mathbb exists 小星星 反演 子集 ZJOI2016 forall 转移

前言

大风天踢了会球, 立竿见影就觉得感冒了, 无敌了, 一会去医务室整点抗病毒

颓了一会好点了()

思路

首先转化题意

给你一张 \(n\) 点 \(m\) 边的图 \(\mathbb{G}\) 和一棵同样由这 \(n\) 个点组成的树 \(\mathbb{T}\), 求对树上的点有多少中标号方式 \(p\), 使得 \(\forall {(u, v)} \in \mathbb{T} , \exists (p_u, p_v) \in \mathbb{G}\)

又是数数, 怎么做呢
你注意到 \(n \leq 17\) , 明示了状压, 我们考虑往这个方向想

考虑树形 \(\rm{dp}\) , 令 \(f_{i, \mathbb{S}}\) 表示 \(i\) 的子树中映射了原图中 \(\mathbb{S}\) 中的点的方案数, 也就是说这些编号已经被使用
考虑转移, 你发现对于 \(f_{i, \mathbb{S}}\) , 我们需要找到 \(\mathbb{S}\) 的一些不相交子集, 而且要确定 \(\forall j \in son(i) , \exists (p_i, p_j) \in \mathbb{G}\) , 你发现仅仅靠当前的状态, 不能确定 \(\forall j \in son(i) , \exists (p_i, p_j) \in \mathbb{G}\) 的条件, 所以考虑加一维

令 \(f_{i, j, \mathbb{S}}\) 表示对于 \(i\) 子树, 将 \(i\) 映射到 \(j\) , 子树中已经映射的点集为 \(\mathbb{S}\) , 可能的方案数
考虑转移, 我们可以通过将子树一个一个插入来转移

\[\forall u \in son(i) , f_{i, j, \mathbb{S} \cup \mathbb{S}^{\prime}} \stackrel {\exists (j, v) \in \mathbb{G}, \mathbb{S} \cap \mathbb{S}^{\prime} = \varnothing} {\longleftarrow} f_{u, v, \mathbb{S}} \cdot f_{i, j, \mathbb{S}^{\prime}} \]

首先要对这样转移的正确性打个补丁
很容易发现的问题是, 残留了一些非法的状态, 例如 \(f_{i, j, \mathbb{S}}\) 这样一个状态, 其子树有可能并没有填充完
很好想到的处理方法是, 对于所有状态, 只有 \(|\mathbb{S}| = siz_i\) 的才有意义, 对于其他的情况, 用完即弃即可

你发现这样子做的时间复杂度是 \(\mathcal{O} (n^3 3^n)\) , 过不去
科技优化到 \(\mathcal{O} (n^4 2^n)\) ,过不去

只能从本质上进行优化


看了下 \(\rm{TJ}\) , 发现新大陆「子集反演」, 直觉告诉我其与「选择」类问题有关联

子集反演的一些基础知识 不在赘述

考虑令 \(f(\mathbb{S})\) 表示「至多」选择 \(\mathbb{S}\) 中的点集进行编号, \(g(\mathbb{S})\) 表示「恰好」选择 \(\mathbb{S}\) 中的点集进行编号, 套路转移

一个误区是我们必须确保 \(g(\mathbb{S})\) 计算的是至少用一次, 而 \(f\) 没有这个要求, 容易发现

\[f(\mathbb{S}) = \sum_{\mathbb{T} \subseteq \mathbb{S}} g(\mathbb{T}) \]

因为是枚举集合, 所以当然也就没有组合数, 也就当然没有二项式反演的广泛性

余下的都是套路

总结

神秘的转移方式, 拆分集合的新 \(\rm{trick}\)

「子集反演」解决的一类特殊问题, 常常用于优化状态压缩类的问题

标签:mathbb,exists,小星星,反演,子集,ZJOI2016,forall,转移
From: https://www.cnblogs.com/YzaCsp/p/18654596

相关文章

  • ZJOI2016 旅行者 题解
    ZJOI2016旅行者题解题目大意:给定一个\(n\timesm\)的网格图,相邻的四连通的点之间有给定边权的双向边,有\(Q\)个离线询问,问两个点之间的最短路。\(n\timesm\le2\times10^4,Q\le10^5\)。发现了吗?和上次省选组的三角剖分那道题很像,这种平面图上的最短路很有可能是分治......
  • 无源蜂鸣器播放小星星
    #defineL163628#defineL1_S63731#defineL263835#defineL2_S63928#defineL364021#defineL464103#defineL4_S64185#defineL564260#defineL5_S64331#defineL664400#defineL6_S......
  • 消灭星星游戏程序设计【连载十】——小星星的残影轨迹
    消灭星星游戏程序设计【连载十】——小星星的残影轨迹大家每次都可以在页面中下载本节内容的实现代码,一步一步从简单开始,逐步完成游戏的各种功能,如果大家有任何问题也欢迎留言交流。游戏整体效果展示:1、本节要达到的效果这一节课,我们需要添加小星星的残影轨迹效果,也......
  • P3350 [ZJOI2016] 旅行者
    咕了2天才写的题解还是比较经典的题目,分治处理网格图最短路离线下来,利用分治的思想,用一条线把网格图平均劈成两半,每次只考虑询问在两块的一对点,所有的线必须经过直线上的一个点,于是我把线上所有点都在规定范围内跑一次dijkstra,最后直接算答案,显然我想让最短路跑的次数最小,每次选......
  • P3349 [ZJOI2016] 小星星
    P3349[ZJOI2016]小星星树形dp+子集反演有一张图和一棵树,点数都为\(n\),给树上的每个点一个映射\(a_i\),每个\(a_i\)不同,\(a_i\in[1,n]\)。要求对于树上所有\((u,v)\),都有\((a_u,a_v)\)在图上。求映射方案数。看到\(n\)的范围,可以想到树形状压dp。设\(F_{i,j,S}\)......
  • P3350 [ZJOI2016] 旅行者
    P3350[ZJOI2016]旅行者分治+最短路网格图可以想到分治。每次将长边分为两半,处理越过中线的询问。那么就可以枚举中线上的每个点更新答案,经过\(x\)的路径更新\((u,v)\)就是\(dis_{u,x}+dis_{x,v}\)。每次预处理中线上每个点的单源最短路即可。设\(S=nm\),复杂度\(O(S\sq......
  • 自定义视频神器,《小星星去重播放器》助您轻松解决视频画面重复问题,让您的无人直播更稳
    你是否还在靠剪辑来去重视频?是否还在通过手动点击来进行循环播放?是否还在通过拼接来增加视频时长?快来看看这款只需要简单的设置就能对视频进行全面去重,专为企业展播和无人直播设计的工具——《小星星去重播放器》!视频播放打开已保存的第一个视频/视频管理里添加需要修改的视频......
  • 快手无人直播防封软件——《小星星去重播放器》实时修改视频,最大程度去避免违规!
     做快手无人直播的朋友们,你是否还在靠剪辑拼接来达到视频去重的效果呢?是否也对平台的封禁处罚束手无策,万分苦恼?来看看这款专为无人直播而生的《小星星去重播放器》。只需要简单几个设置就能对视频进行全面去重,还不影响视频效果,让你的快手无人直播无需剪辑拼接,永远快人一步!如果你......
  • 抖音无人直播必备——《小星星去重播放器》只需简单几个设置就能去重你的视频,让你的抖
     做抖音无人直播的朋友们,你是否还在靠剪辑拼接来达到视频去重的效果呢?是否也对平台的封禁处罚束手无策,万分苦恼?来看看这款专为无人直播而生的《小星星去重播放器》。只需要简单几个设置就能对视频进行全面去重,还不影响视频效果,让你的无人直播无需剪辑拼接,永远快人一步!如果你也是......
  • 《小星星直播互动宝》:让你的拼多多直播更省心,评论区触发关键词自动回复,再也不用紧盯屏
    作为一名拼多多直播带货用户,你是否曾因为必须要坐在电脑旁紧盯评论区回复而烦恼,是否也有需要做自己的事情但是无法放下直播间的时候,或者说有没有需要同时管理多个直播间的?快来看看这款软件——小星星直播互动宝宝!自动回复评论区问题,轻松省力:这个软件支持抖音、快手和拼多多三个......