【2018.12.17】NOI模拟赛4
题目
WZJ题解
T1
T2
T3
后缀自动机+($parents$ 树)树链剖分
发现有大量子串需要考虑,考虑摁死子串的一端。
首先,这题显然是一道离线题,因为所有的询问都是 $1$ 到 某个数,也就是一个前缀和,完全可以递推处理。
所以先把所有的询问按 $m$ 从小到大排序。
然后我们画画 $KMP$ 树,发现一些神奇的性质。

设虚边下面那个点为新加入的一个点(字符),如果这个点的编号(编号 即插入的这个字符是原串的第几位) 比这棵树上面原有的那些点的编号都大的话,那它一定会成为叶子节点。
也就是说,如果你按顺序依次插入原串的每一位字符,每个新加入的字符一定都会加到树的叶子处。
这样的话,上面那些以前插入的节点的深度都没有变,新加入一个点不会对之前的任何点的贡献造成影响。
所以所有右端点范围在 $[1,i]$ 内的子串的答案 就是所有右端点范围在 $[1,i-1]$ 内的子串的答案 $+$ 所有右端点在第 $i$ 位的子串的答案。
这个可以二维前缀和递推求,即开一个 $fakeans$ 动态累加 所有右端点范围在 $[1,i]$ 内的子串的答案,再开一个 $ans$ 动态累加累加 $fakeans$,这样就算上了每一位固定为右端点 且左端点任意时的所有子串,即所有左右端点情况的子串。
我们考虑加入第 $i$ 位字符时,这个字符对答案的贡献怎么算。
由于加入的这个字符一定在树的最底下(叶子),所以它的深度就是 树

如图,也就是以原串第 $i$ 位为结尾的 $i$ 个后缀串。
【2018.12.17】NOI模拟赛4的更多相关文章
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- 2018.10.17校内模拟赛:T2神光
题面:pdf 首先排序,二分,然后怎么判定是否可行. 最简单的思路是,dp[i][j][k],到第i个,用了j次红光,k次绿光,前i个点都选上了,是否可行.然后转移就行. 然后考试的时候就想到这了,往 ...
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- 调试大叔V2.1.0(2018.12.17)|http/s接口调试、数据分析程序员辅助开发神器
2018.12.17 - 调试大叔 V2.1.0*升级http通讯协议版本,完美解决Set-Cookie引起的系列问题:*新增Content-Type编码格式参数,支持保存(解决模拟不同网站或手机请求 ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- 2018.10.16 NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...
- 6.28 NOI模拟赛 好题 状压dp 随机化
算是一道比较新颖的题目 尽管好像是两年前的省选模拟赛题目.. 对于20%的分数 可以进行爆搜,对于另外20%的数据 因为k很小所以考虑上状压dp. 观察最后答案是一个连通块 从而可以发现这个连通块必然 ...
- 【2018.12.10】NOI模拟赛3
题目 WZJ题解 大概就是全场就我写不过 $FFT$ 系列吧……自闭 T1 奶一口,下次再写不出这种 $NTT$ 裸题题目我就艹了自己 -_-||| 而且这跟我口胡的自创模拟题 $set1$ 的 $T ...
随机推荐
- SpringMVC归纳
SpringMVC归纳 操作流程 配置前端控制器 在web.xml中配置 配置处理器映射器 在springmvc配置文件中配置 配置处理器适配器 在springmvc配置文件中配置 配置注解适配器和映 ...
- python_107_ __metaclass__ 元类
类默认是由 type 类实例化产生,type类中如何实现的创建类?类又是如何创建对象? 答:类中有一个属性 __metaclass__,其用来表示该类由 谁 来实例化创建,所以,我们可以为 __met ...
- CentOS安装RabbitMQ步骤
1.安装gcc yum install gcc 安装 ncurses-devel yum install ncurses-devel 2.安装erlang 下载安装包 http://www.erlan ...
- 【0624作业】使用Scanner类输入并显示会员卡号
package com.work0624; /** * 练习题 * 使用Scanner类输入并显示会员卡号 * @author L */ import java.util.Scanner; publi ...
- Java的日期类和日期格式化类
日期类: Date date = new Date(); // 获取当前的系统时间 2 System.out.println("年份:"+ date.getYear()); Cal ...
- 数据库连接池 dbcp与c3p0的使用区别
众所周知,无论现在是B/S或者是C/S应用中,都免不了要和数据库打交道.在与数据库交 互过程中,往往需要大量的连接.对于一个大型应用来说,往往需要应对数以千万级的用户连接请求,如果高效相应用户请求,对 ...
- iOS项目工程及目录结构
做过一些iOS的项目,不同项目的沉淀没有积累到一起,目录的管理都在后期随着人员的增加越来越混乱,因此在这里做一些梳理,希望达到两个目的. 一套相对通用的目录结构,作为后续项目的模版. 积累相应的基础库 ...
- 如何使用jmeter做接口测试
1.传参:key=value形式 2.传参:json格式 3.jmeter上传文件 4.jmeter传cookie 或者使用 HTTP Cookie管理器
- laravel中使用PHPQuery实现网页采集
由于没有PHPQuery的composer包安装所以需要我们手动在我们的laravel项目中安装加载PHPQuery,这里需要设置laravel的autoload->class map. 1.首 ...
- 多线程辅助类之CountDownLatch(三)
CountDownLatch信号灯是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待.它可以实现多线程的同步互斥功能,和wait和notify方法实现功能类似,具体 ...