luogu P5291 [十二省联考2019]希望
无论最终结果将人类历史导向何处
\(\quad\)我们选择
\(\quad\quad\)\(\large{希望}\)
诶我跟你讲,这题超修咸的
下面称离连通块内每个点距离不超过\(L\)的点为中心点.首先可以注意到,所有连通块的共同的中心点一定是个连通块,所以可以写一个暴力状压,表示中心点状态为\(S\)的方案数,然后随便枚举一个连通块转移即可
中心点是连通块很烦,考虑转化一下.其实答案为只考虑中心点为一个点的方案减去只考虑中心点为一条边上的两个点的方案,因为考虑任意一个连通块,在算中心点为一个点会算点数\(n\)次,在算中心点为一条边会算边数\(m\)次,然后又有连通块一定满足\(n-m=1\),所以这样算每个连通块都会被算一次
先考虑中心点为一个点,设\(f_{x,l}\)表示在\(x\)子树内,包含\(x\),且到\(x\)最远距离不超过\(l\)的连通块个数,转移就是\(f_{x,l}=\prod_{y\in son(x)} (f_{y,l-1}+1)\),就是每个点儿子可选或不选,然后还要设\(g_{x,l}\)表示不包含\(x\)子树其他点,包含\(x\),且到\(x\)最远距离不超过\(l\)的连通块个数转移是\(g_{x,l}=g_{fa,l-1}\prod_{y\in son(fa),y\neq x} (f_{y,l-2}+1)\).那么这个点的贡献就是\((f_{x,l}g_{x,l})^k\).一条边也类似,只不过注意两个到中心点的距离都要\(\le L\),所以是\((f_{x,l-1}(g_{x,l}-1))^k\)
这个暴力是\(O(nL)\)的,不过因为下标和深度有关,所以可以长链剖分优化.\(f\)的话,一个点先继承重链状态,然后轻儿子暴力乘上去.注意第二维大于轻儿子第二维最大值(也就是\(y\)往下最多能延伸多深,假设是\(dep_y\))的部分,是要乘上\(f_{y,dp_y}\)的,所以还要支持后缀乘,用个可持久化线段树维护即可(因为要算g要还原每个\(x\)的dp值)
然后就是\(g\),首先重链,重儿子直接继承当前节点状态.对于轻儿子,看上去要转移的状态比较多,不过可以注意到一个东西,就是一个点\(x\)有用的\(g\)的第二维的范围是\([L-dp_x,L]\),那么只要转移这些范围就好了,复杂度是\(\sum\)轻儿子的\(dep\),所以复杂度也是对的.注意转移到儿子时要扣掉自己本身的贡献,一个想法是用所有儿子\(f\)的乘积乘上自己\(f\)的逆元,但是自己的\(f\)是有可能为0的,所以转化成前缀积乘后缀积的形式,后缀积可以在做的时候维护
然后那个可持久化线段树有个log,很不优秀.然后我们又发现前缀积其实在做的时候已经求过了,所以我们只要开个栈栈序撤销合并的操作就得到前缀积.然后那个后缀乘也可以看做是全部乘一个值然后前缀乘上逆元,所以考虑维护dp数组的乘法标记\(a\)和加法标记\(b\),我们在dp数组上存值\(x\),然后真实值应该是\(ax+b\),每次后缀乘\(c\),直接给\(a\)和\(b\)乘上\(c\),然后前面的值暴力改成\((ax+b-bc)(ac)^{-1}\).还有就是可能\(c=0\),那么在维护赋值标记\(pl,nm\),表示下标为\(pl\)之后的值都是\(nm\),每次把\(nm\)改成\(-b*a^{-1}\)即可
不过逆元的问题还是没解决.我们发现要求逆元的值一定是\(f_{x,dep_x}\),那么可以参考阶乘求逆元,先把前缀积搞出来,然后求出最后一项的逆元,然后用前缀积递推出就可以算出每个数的逆元
差不多了,然后剩下的就看你的了(逃

luogu P5291 [十二省联考2019]希望的更多相关文章
- 【题解】Luogu P5291 [十二省联考2019]希望
ytq鸽鸽出的题真是毒瘤 原题传送门 题目大意: 有一棵有\(n\)个点的树,求有多少方案选\(k\)个联通块使得存在一个中心点\(p\),所有\(k\)个联通块中所有点到\(p\)的距离都\(\le ...
- Luogu P5285 [十二省联考2019]骗分过样例
Preface ZJOI一轮被麻将劝退的老年选手看到这题就两眼放光,省选也有乱搞题? 然后狂肝了3~4天终于打完了,期间还补了一堆姿势 由于我压缩技术比较菜,所以用的都是非打表算法,所以一共写了5K- ...
- Luogu P5290 [十二省联考2019]春节十二响
这题是最近看到的今年省选题中最良心的一道了吧 看题+想题+写题都可以在0.5h内解决,送分含义明显啊 首先理解了题意后我们很快就能发现两个点如果要被分在一段那么必须在它们的祖先处合并 首先我们考虑下二 ...
- Luogu P5284 [十二省联考2019]字符串问题
好难写的字符串+数据结构问题,写+调了一下午的说 首先理解题意后我们对问题进行转化,对于每个字符串我们用一个点来代表它们,其中\(A\)类串的点权为它们的长度,\(B\)类串的权值为\(0\) 这样我 ...
- Luogu P5283 [十二省联考2019]异或粽子
感觉不是很难的一题,想了0.5h左右(思路歪了,不过想了一个大常数的两只\(\log\)做法233) 然后码+调了1h,除了一个SB的数组开小外基本上也没什么坑点 先讲一个先想到的方法,我们对于这种问 ...
- luogu P5289 [十二省联考2019]皮配
传送门 首先考虑一个正常的dp,设\(f_{i,j,k}\)为前\(i\)个学校,\(j\)人在\(\color{#0000FF}{蓝阵营}\),\(k\)人在\(\color{#654321}{吔} ...
- 【题解】Luogu P5284 [十二省联考2019]字符串问题
原题传送门 我用sa做的本题 (码量似乎有点大) 先对原串建sa 考虑如何建图: 从大到小枚举长度len 先将height中等于len的两个位置在并查集合并起来,将lst也合并(lst是链表) 再将长 ...
- luogu P5290 [十二省联考2019]春节十二响 优先队列_启发式合并
思维难度不大,在考上上写的启发式合并写错了,只拿了 60 pts,好难过QAQ 没什么太难的,在考场上想出链的部分分之后很容易就能想到正解.没错,就是非常短的启发式合并.注意一下,写的要漂亮一点,否则 ...
- 【题解】Luogu P5283 [十二省联考2019]异或粽子
原题传送门 看见一段的异或和不难想到要做异或前缀和\(s\) 我们便将问题转化成:给定\(n\)个数,求异或值最靠前的\(k\)对之和 我们珂以建一个可持久化01trie,这样我们就珂以求出每个值\( ...
随机推荐
- nginx 499状态码
Web服务器在用着nginx,在日志中偶尔会看到有499这个错误. rfc2616中,400-500间的错误码仅定义到了417,所以499应该是nginx自己定义的.后来想到读读nginx代码,疑问立 ...
- 转://Oracle数据库升级后保障SQL性能退化浅谈
一.数据库升级后保障手段 为了保障从10.2.0.4版本升级到11.2.0.4版本更加平稳,我们事先采用了oracle性能分析器(SQL Performance Analyzer)来预测数据库的关键S ...
- Redis数据持久化、数据备份、数据的故障恢复
1.redis持久化的意义----redis故障恢复 在实际的生产环境中,很可能会遇到redis突然挂掉的情况,比如redis的进程死掉了.电缆被施工队挖了(支付宝例子)等等,总之一定会遇到各种奇葩的 ...
- Hexo + GitEE 搭建、备份、恢复、多终端
Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. Hexo 是使用的比较多的博客框架了,我也尝试自己搭 ...
- PyInstaller安装使用方法
PyInstaller可以把Python应用程序及其所有依赖项捆绑到一个包中.用户可以在不安装Python解释器或任何模块的情况下运行打包的应用程序.PyInstaller支持Python 2.7和P ...
- 小程序——阿里服务器配置https及什么是IIS
1.申请域名:阿里云 2.免费开启SSL证书:管理=>免费开启SSL证书>单域名>dev.xxx.top 3.配置服务器:下载=>IIS7证书 *注册一个域名,可以免费开启一个 ...
- Openstack基础环境交换机常用配置(CISCO 3750G为例)
NOTE: 用户模式提示符为:cisco> 特权模式提示符为:cisco# 全局配置模式提示符为:cisco(config)# 端口模式提示符为:cisco(config-if)# 基础操作 ...
- 产品经理与程序员矛盾&相处
产品运营 - 知乎https://www.zhihu.com/topic/19551958/hot 产品经理与程序员矛盾的本质是什么? - 知乎https://www.zhihu.com/questi ...
- Linux(Ubuntu)使用日记------自定义命令的使用
Linux如何自定义自己的命令呢?修改 系统中的 ~/.bashrc 文件即可 在这个文件最后面使用alias命令重定义命令. 例如: # novel-git begin alias n.r='les ...
- Jekins相关笔记
Jekins忘记密码操作 https://blog.csdn.net/intelrain/article/details/78749635 Jekins重启 https://www.cnblogs.c ...