ZJOI2016 小星星 题解
我一生之敌是状压
本文发表于
- 洛谷博客:https://www.luogu.com.cn/blog/LoveMC/solution-p3349
- Cnblogs:https://www.cnblogs.com/CDOI-24374/p/15814569.html(可能阅读体验会差一点)
题面
给一个 \(n\) 点 \(m\) 边无向图 \(G=(V,E)\) 和一棵树,问有多少个排列 \(\{a_i\}\) 使得对于树上每一条边 \((u,v)\) 都有 \((a_u, a_v)\in E\) .
\(n\le 17\),\(m\le \dfrac 12n(n-1)\) .

题解
前置知识 - 子集反演
首先反演是啥大家都知道吧 
正着的子集反演:
\]
证明(抄的 vfleaking 神仙的):
Lemma.
\[\sum_{T\subseteq S}(-1)^{|T|}=|S=\varnothing|
\]和二项式反演形式相似吧
好,回到原命题 .
\[\large\begin{aligned}g(S)&=\sum_{T\subseteq S} [S-T=\varnothing]g(T)\\&=\sum_{T\subseteq S}\sum_{R\subseteq S-T}(-1)^{|R|}g(T)\\&=\sum_{T\subseteq S}(-1)^{|T|}\sum_{R\subseteq S-T}g(R)\\&=\sum_{T\subseteq S}(-1)^{|T|}f(T-S)\\&=\sum_{T\subseteq S}(-1)^{|S|-|T|}f(T)\end{aligned}
\]和原式长得一模一样,证毕 .
似乎 vfk 的课件里 \(p,q\) 是二进制表示的集合吧,希望我没理解错QwQ
vfk 课件偷偷在第三步换了一下变量名,坏坏
(反向子集反演:
\]
可以看做正着反演的直接推论)
别的不说了,这里又不是「子集反演学习笔记」.
1. 朴素 dp
考虑状压 dp.
令 \(dp_{i, j, S}\) 表示 \(i\) 点表示 \(j\),已经表示了 \(S\) 状态的方案数 .
\(i,j\) 维度显然,\(S\) 是为了去重,因为 \(a\) 必须是排列 .
转移非常容易:
\]
会点计数原理(加法,乘法)就能推出来 .
时间复杂度 \(O(n^33^n)\) .
定睛一看:\(n\le 17\),寄!
2. 优化一下
看看状态,这个 \(S\) 看起来挺没用,于是直接丢掉!
没了 \(S\) 我们就不能去重了呐,所以 \(a\) 是排列这个东西就不太能保证了 .
在 \(a\) 不一定是排列的前提下,定义:
- \(f(S)\):\(a\) 恰好使用了 \(S\) 中的所有点的方案数
- \(g(S)\):\(a\) 至多使用了 \(S\) 中的所有点的方案数
我们要的答案就是 \(f(U)\)(\(U\) 是全集)
显然有
\]
妈呀这不是子集反演吗,于是
\]
于是我们只要求 \(g\) 即可!
\(g\) 咋求呐?考虑 dp,令 \(dp_{i, j}\) 表示 \(i\) 点表示 \(j\),在 \(g\) 的条件下的方案数 .
于是可以轻易转移(与朴素的类似)
\]
我草这不是和朴素的一模一样吗
于是
\]
\(root\) 是树的根,你随便钦定一个就好了 .
单次 dp \(O(n^22^n)\),总时间复杂度 \(O(n^32^n)\),大体能过
细节
答案不大于 \(n!\le 355687428096000\),long long 完全能行 .
然而 \(g(S)\le n^n\le 827240261886336764177\),unsigned long long 都不行 .
我们自然可以用 __int128,但是,其实我们随便选一个幸运数字 \(M>n!\),然后答案对 \(M\) 取模就行了!
方便点,unsigned long long 自然溢出就完啦!是不是很简单
有符号整形溢出是 UB,但是我懒的改了,我代码里是有符号的 .
代码
提交记录 https://uoj.ac/submission/528128 .
吸个氧跑得飞快,不吸就会 TLE(或许是用 vector 太多了?)
自以为可读性好!
Ref.
- 炫酷反演魔术 - vfleaking(PPT)
- 炫酷反演魔术 - command_block
- 题解 P3349 [ZJOI2016]小星星 - RenaMoe
- 题解 P3349 [ZJOI2016]小星星 - 辰星凌
- 题解 P3349 [ZJOI2016]小星星 - one_cell(AcWing)
ZJOI2016 小星星 题解的更多相关文章
- 【题解】P3349 [ZJOI2016]小星星 - 子集dp - 容斥
P3349 [ZJOI2016]小星星 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 小 \(Y\) 是一个心灵手巧 ...
- BZOJ 4455: [Zjoi2016]小星星 [容斥原理 树形DP]
4455: [Zjoi2016]小星星 题意:一个图删掉一些边形成一棵树,告诉你图和树的样子,求让图上的点和树上的点对应起来有多少方案 看了很多题解又想了一段时间,感觉题解都没有很深入,现在大致有了自 ...
- 4455[Zjoi2016]小星星 容斥+dp
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 527 Solved: 317[Submit][Status] ...
- [ZJOI2016]小星星&[SHOI2016]黑暗前的幻想乡(容斥)
这两道题思路比较像,所以把他们放到一块. [ZJOI2016]小星星 题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星. ...
- 【BZOJ 4455】 4455: [Zjoi2016]小星星 (容斥原理+树形DP)
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 426 Solved: 255 Description 小Y是 ...
- 洛谷 P3349 [ZJOI2016]小星星 解题报告
P3349 [ZJOI2016]小星星 题目描述 小\(Y\)是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用\(m\)条彩色的细线串了起来,每条细线连着两颗小星星. 有一 ...
- bzoj 4455 [Zjoi2016]小星星 树形dp&容斥
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 643 Solved: 391[Submit][Status] ...
- 【题解】Luogu P3349 [ZJOI2016]小星星
原题传送门 我们考虑设\(dp_{i,j}\)表示树上的点\(i\)在图上对应的点为\(j\)时\(i\)和子树对应在图上的方案数 \(dp_{u_i}=\prod_{v \in u.son} dp_ ...
- [ZJOI2016]小星星
题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星. 有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这个饰品只剩下了 ...
随机推荐
- SQL连接查询优化[姊妹篇.第五弹]
上篇的sql优化篇章,更多偏向于优化的思想概念,先前抛出的4个优化问题中,篇幅过长,只对前两个问题进行了解析. 接下来我们一起来谈谈sql的连接查询优化,更偏向于实际运用,并对如下两个问题进行探讨.篇 ...
- Redis设计与实现3.1:主从复制
主从复制 这是<Redis设计与实现>系列的文章,系列导航:Redis设计与实现笔记 SLAVEOF 新旧复制功能 旧版复制功能 旧版复制功能的实现为 同步 和 命令传播: 当刚连上Mas ...
- 李阳:京东零售OLAP平台建设和场景实践
导读: 今天和大家分享京东零售OLAP平台的建设和场景的实践,主要包括四大部分: 管控面建设 优化技巧 典型业务 大促备战 -- 01 管控面建设 1. 管控面介绍 管控面可以提供高可靠高效可持续运维 ...
- Spring Security之短信登录
实现短信验证码登录 前面实现了 用户名+密码 的登录方式,现在实现一下短信验证码登录. 开发短信验证码接口 短信验证码和图形验证码类似,用户从手机短信得到验证码和从图片得到验证码类似. 校验短信验证码 ...
- c# 简单的滑动图片验证
普通的验证码对用户使用体验不友好,出现了滑动图片验证的验证方式,用户只要按住滑块完成图片的拼接即可通过验证(这是最简单的方式,滑动轨迹,数据分析,滑行速度 什么的暂没考虑) 主要的实现思路: 1.先从 ...
- 关于spring整合mybatis
第一步导入依赖 <dependencies> <dependency> <groupId>org.mybatis</groupId> <artif ...
- ElasticSearch6.4.2
做一个简单的API记录 1.依赖为6.4.2 比较老的版本 2.指定ES集群,可接多个Put(); Setting setting=Setting.builder().put("clust ...
- 000 上传本地库到Github远程库过程全记录
20220613 Github上新创建了一个CsImage库,之后本地创建了一个对应名称的目录,并创建本地库,进行了上传操作,记录一下过程 1.Github上CsImage库创建完成 Github上创 ...
- ExtJS 布局-Fit布局(Fit Layout)
更新记录: 2022年5月31日 第一稿. 1.说明 Fit布局只会显示一个子组件,子项组件的尺寸会拉伸到容器的尺寸.当容器进行调整大小(resized),子组件会自动调整去拉伸到付容器的大小. 注意 ...
- python亲密数设计
'''亲密数 (如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数对.一般通过叠代编程求出相应的亲密数对)'''n = 3000def fun ...
