「模拟赛」A 层多校联训 4(卖品:CTH)
双倒一啦!
感觉这次最大的错误就是没看 T2。(本质原因还是时间浪费的太多了)
赛时记录在闲话啦
02 表示法
唐诗题!考高精的人都\(**\),输出深度优先搜索解决。高精乘 2、高精减。
子串的子串
官方题解写的不好,放一下 Ratio 的好吃题解:

意思就是:\(ans_{l,r-1}\) 和 \(ans_{l+1,r}\) 中 包含重复的部分 \(ans_{l+1,r-1}\),于是我们用 \(ans_{l,r-1} + ans_{l+1,r}-ans_{l+1,r-1}\) 来转移得到 \(ans_{l,r}\) 以避免重复,最后别忘了再加上字符串 \(s[l,r]\) 自己。
魔法咒语
trie 树
非官方题解思路:(CTH 巨佬的赛时思路,更好理解)
正序、倒序各建一颗 trie 树分别记为 \(tr1,tr2\),那么所有前缀的个数就是 \(tr1\) 的节点数,后缀的个数就是 \(tr2\) 的节点数。
但直接相乘显然会有重复部分,比如两个字符串:abc 和 cd,前缀 abc 和 后缀 d 可以拼成一个字符串 abcd,同样前缀 ab 和 后缀 cd 也可以拼成abcd,有重复,考虑怎么减去这部分重复。
什么时候会有这样的重复呢?发现如果我们存在一个前缀的最后一个字符和一个后缀的第一个字符相同时,就会造成 1 个重复,因为 (该前缀删去最后一个字符加上该后缀) 与 (该前缀加上该后缀删去第一个字符)可以拼成相同的字符串。
但注意,我们所找的会造成重复的前缀和后缀不能只有一个字符(这样删去一个字符后就成空串了,但题目要求不为空)。
所以我们对于 26 个英文字母分别记它们作为前缀最后一个字符的个数 \(cntQ_{字母}\) 和 作为后缀第一个字符的个数 \(cntH_{字母}\),保证这些前缀、后缀都是两个及以上的字符。
那么答案就是两棵树的节点数相乘减去 \(\sum _{i=26 个英文字母} cntQ_i\times cntH_i\)。
表达式
赛时最后五十分钟打了 45 部分分(不会 CRT),以为会很极限了,结果读入出锅保龄 RE 了。
部分分:
\(15pts\):暴力,每次询问从 \(1~n\) 算一遍就好了;
\(5pts\):每次询问时所有符号相同的情况,记一下所有数的加和 \(s\) 以及乘积 \(f\),询问 \(x\) 时符号是 + 答案就是 \(x+s\),是 * 答案就是 \(x\times f\),是 ^ 答案就是 \(x^f\);
\(15 pts\)(但实际有 \(25pts\)):对于没有 ^ 的样例,可以分块或者线段树简单维护就好,如果询问 \(x\) 时,序列可以转化为:\((k_1x+b_1)\times k_2+b_2=k_1k_2x+k_2b_1+b_2\),那么 \(k_{new}=k_1k_2,b_{new}=k_2b_1+b_2\),分块预处理出每个块的总 \(K\) 和 总 \(B\) 就好了,更新时把整个块重新遍历一遍,更新 \(K,B\) ,查询计算一遍所有块得到总的 \(k_总\) 和 \(b_总\),代入 \(x\) 计算。
正解:
数据点分治
前三个点模数过大但数据范围小直接暴力。
其他的点对于模数特别小的,直接维护线段树上的点所有 \(x=[0,mod-1]\) 进入该点时得到的答案,时间复杂度大概是 \(O(qn\log n mod)\)。
而模数较大但是是合数的,把模数拆分成多个小一点的互质的数作为模数,对于每个模数分别像以上方式一样维护,最后 CRT 合并即可。
End
哦对,CTH 大佬无论讲题还是调题都巨棒呢,人也很热心,什么巨型数据结构啊,5k 以上代码啊,都欢迎来找 CTH 调捏
「模拟赛」A 层多校联训 4(卖品:CTH)的更多相关文章
- 「CSP-S模拟赛」2019第四场
「CSP-S模拟赛」2019第四场 T1 「JOI 2014 Final」JOI 徽章 题目 考场思考(正解) T2 「JOI 2015 Final」分蛋糕 2 题目 考场思考(正解) T3 「CQO ...
- #10471. 「2020-10-02 提高模拟赛」灌溉 (water)
题面:#10471. 「2020-10-02 提高模拟赛」灌溉 (water) 假设只有一组询问,我们可以用二分求解:二分最大距离是多少,然后找到深度最大的结点,并且把它的\(k\)倍祖先的一整子树删 ...
- #10470. 「2020-10-02 提高模拟赛」流水线 (line)
题面:#10470. 「2020-10-02 提高模拟赛」流水线 (line) 题目中的那么多区间的条件让人感觉极其难以维护,而且贪心的做法感觉大多都能 hack 掉,因此考虑寻找一些性质,然后再设计 ...
- python爬虫22 | 以后我再讲python「模拟登录」我就是狗
接下来就是 学习python的正确姿势 做爬虫 绕不开模拟登录 为此小帅b给大家支了几招 python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 有些网站的登录很弱鸡 传个用户名和密 ...
- 「NOIP模拟赛」数位和乘积(dp,高精)
统计方案数,要么组合数,要么递推(dp)了. 这是有模拟赛历史以来爆炸最狠的一次 T1写了正解,也想到开long long,但是开错了地方然后数组开大了结果100->0 T3看错题本来简单模拟又 ...
- 「Vijos 1284」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法阵
佳佳的魔法阵 背景 也许是为了捕捉猎物(捕捉MM?),也许是因为其它原因,总之,佳佳准备设计一个魔法阵.而设计魔法阵涉及到的最关键问题,似乎就是那些带有魔力的宝石的摆放-- 描述 魔法阵是一个\(n ...
- 「CSP-S模拟赛」2019第二场
目录 T1 Jam的计数法 题目 考场思路(正解) T2 「TJOI / HEOI2016」排序 题目 考场思路(假正解) 正解 T3 「THUWC 2017」随机二分图 题目 考场思路 正解 这场考 ...
- 「CSP-S模拟赛」2019第一场
目录 T1 小奇取石子 题目 考场思路 正解 T2 「CCO 2017」专业网络 题目 考场思路 题解 T3 「ZJOI2017」线段树 题目 考场思路 正解 这场考试感觉很奇怪. \(T1.T2\) ...
- Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
一棵10层的二叉树,最多包含多少个结点? 注意当一棵二叉树只有一个结点时为一层. 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余 ...
- 「模拟赛20190327」 第二题 DP+决策单调性优化
题目描述 小火车虽然很穷,但是他还是得送礼物给妹子,所以他前往了二次元寻找不需要钱的礼物. 小火车准备玩玩二次元的游戏,游戏当然是在一个二维网格中展开的,网格大小是\(n\times m\)的,某些格 ...
随机推荐
- 【Big Data】 DBeaver连接Phoenix
前言 Phoenix是Hbase数据库的一个SQL化中间件 Hbase本身是一个NoSQL类型的列族库,Phoenix可以将其转换成SQL操作 Phoenix提供的客户端Jar包,可以让DBeaver ...
- 【MySQL】Windows-5.7.30 解压版 下载安装
1.Download 下载 mysql官网: https://dev.mysql.com/ 找到download点击进入下载页面: https://dev.mysql.com/downloads/ 找 ...
- 举例说明:ChatGPT和百度文心一言的差距
翻译: we employ ten sub-generators against one discriminator 百度的表现: ChatGPT的表现:
- 带有最小间隔时间的队列读取实现 —— 最小等待时间的队列 —— Python编程(续)
接前文: 带有最小间隔时间的队列读取实现 -- 最小等待时间的队列 -- Python编程 由于上次的设计多少有些简单,这里对此丰富一下. ============================== ...
- 高校教编程是否应该将Python作为主语言
偶读一文:https://www.cnblogs.com/qing-gee/p/12941219.html 想到了这样的一个老问题,个人搞计算机软件开发.人工智能的时间已经十余年,虽然个人能力有限但是 ...
- Illegal key size or default parameters 解决方案
1.背景 在做aes加密时,报错 Illegal key size or default parameters...有的jdk版本报错,有的不报错,原因在于: jdk 或jre\lib\securit ...
- 如何对MIL-STD-1553B进行选型
MIL-STD-1553B产品选型是一个复杂而细致的过程,需要综合考虑多个因素以确保所选产品能够满足特定应用场景的需求. 一.引言 MIL-STD-1553B作为一种广泛应用于航空航天领域的数据总 ...
- 手把手教你实现Scrapy-Redis分布式爬虫:从配置到最终运行的实战指南
## 1.scrapy-redis的环境准备 pip install scrapy-redis 安装完毕之后确保其可以正常导入使用即可. 2. 实现 接下来我们只需要简单的几步操作就可以实现分布式爬虫 ...
- CH01_初识C++
CH01_初识C++ 第一个C++程序 新建项目 新建文件 编写代码 #include <iostream> using namespace std; int main() { cout ...
- 微服务全链路跟踪:jaeger集成hystrix
微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容u ...