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,这样我们就珂以求出每个值\( ...
随机推荐
- 【题解】P1171 售货员的难题
Tags 搜索,状压. 裸的旅行商问题 #include <stdio.h> #include <string.h> #define re register #define ...
- 好程序员web前端分享css常用属性缩写
好程序员web前端分享css常用属性缩写,使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如: #0000 ...
- LCA-RMQ+欧拉序
还是那一道洛谷的板子题来说吧 传送门 其实好几天之前就写了 结果dr实在是太弱了 没有那么多的精力 于是就一直咕咕咕了 哎 今天终于补上来了 LCA概念传送门 RMQ传送门 这个算法是基于RMQ和欧拉 ...
- java 服务端I/O非阻塞实现05
/** * 非阻塞IO多线线程服务端 * 当一个任务进入多线程,这个任务线程需要处理接收信息.发送信息.因而发生I/O阻塞问题 * 利用selector可以实现异步 * */ public class ...
- 错误代码1045 Access denied for user 'root'@'localhost' (using password:YES)
在mysql中新建连接,ip地址是127.0.0.1,账号是root,密码是123456,但是测试连接的时候报错, 错误代码1045 Access denied for user 'root'@'lo ...
- Set.js--创建无重复值的无序集合
Set 集合,不同于 Array,是一种没有重复值的集合. 以下代码出自于<JavaScript 权威指南(第六版)>P217,注意:这里并不是指 es6 / es2015 中的 Set ...
- SpringCloud(1)服务注册与发现Eureka
1.创建1个空白的工程 2.创建2个model工程 一个module(即SpringBoot)工程作为服务注册中心,即Eureka Server,另一个作为Eureka Client. Eureka ...
- 13点值得我们注意的谷歌的JavaScript编写风格
对于编写有效的JavaScript来说,这些并不是硬性的.快速的规则,而只是在源文件中维护一致的.吸引人的样式选择的规则.这对于JavaScript来说尤其有趣,它是一种灵活且多变的语言,允许多种风格 ...
- Python——爬虫——数据提取
一.XML数据提取 (1)定义:XML指可扩展标记语言.标记语言,标签需要我们自行定义 (2)设计宗旨:是传输数据,而非显示数据,具有自我描述性 (3)节点关系: 父:每个元素及属性都有一个父. ...
- iView组件添加API中介绍的事件的方式(render方式添加事件)
iView组件好用,文档齐全,品质可靠稳定.最大的好处是使用了Vue框架,使很多数据绑定和交互问题变的轻松,是难得的开源前端组件.给作者点个赞.用这个组件来学习Vue.js也是不错的选择. 最近用的比 ...