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,这样我们就珂以求出每个值\( ...
随机推荐
- Java中a+=b和a=a+b的区别
在Java语言中a+=b和a=a+b是有区别的,主要的区别是在运算时精度的问题,当然了-=.*=./=,%=也都是一个道理.这里以a+=b和a=a+b为例做说明. (1)下面以一段Java程序为例,试 ...
- UVA - 11478 - Halum(二分+差分约束系统)
Problem UVA - 11478 - Halum Time Limit: 3000 mSec Problem Description You are given a directed grap ...
- MYSQL中文乱码以及character_set_database属性修改
新安装MYSQL,还没有修改数据库系统编码. 之后由于创建数据库时候:create database db_name; 没有指定编码,之后发现乱码就修改各个属性之后还是乱码,便开始配置数据库属性,之后 ...
- python3 Counter模块
from collections import Counter c = Counter("周周周周都方法及")print(c)print(type(c))print('__iter ...
- Shiro学习(一)——Shiro简介
Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大 ...
- MongoDB Change Stream:简介、尝试与应用
在MongoDB3.6引入的新feature中,change stream无疑是非常吸引人的. Change streams allow applications to access real-tim ...
- SpringCloud(1)服务注册与发现Eureka
1.创建1个空白的工程 2.创建2个model工程 一个module(即SpringBoot)工程作为服务注册中心,即Eureka Server,另一个作为Eureka Client. Eureka ...
- OSGI打安装包步骤(底包制作)
相关资源下载 equinox-SDK-LunaSR2 : https://pan.baidu.com/s/1xOzZZ3_VAuQJ3Zfp4W8Yyw 提取码: gjip gemini-web- ...
- Kubernetes — 深入理解容器镜像
而正如我前面所说的,Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”:而 Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙.这么一折 ...
- Centos下安装Mysql异常
问题1: [root@localhost install-files]# rpm -ivh MySQL-server-5.6.27-1.el6.x86_64.rpm --nosignaturePrep ...