「模拟赛」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\)的,某些格 ...
随机推荐
- 认识netty的基本组件
Java NIO VS Netty 有了 Java NIO,而且 Netty 也是基于 Java NIO 实现,那么为什么不能直接用 Java NIO 来实现网络通信模块呢? 接下来我就给大家解释一下 ...
- 【Java】ElasticSearch 在项目里的应用
一.前言: 好久没写笔记了,最近忙一个项目,用到ES查询,以往的笔记写ES都是搭建环境,用Kibana玩一玩 这次是直接调用API操作了,话不多说,进入主题 二.环境前提: 公司用的还是纯Elasti ...
- 如何理解计算机类论文、机器学习论文、人工智能AI论文中的“soft”和“hard”呢?
如何理解计算机类论文.机器学习论文.人工智能AI论文中的"soft"和"hard"呢? 最近在看论文中总看到带有"soft"和"h ...
- PyTorch显存机制分析
参考: ======================================================= 在pytorch中有几个关于显存的关键词: 在pytorch中显存为缓存和变量分 ...
- 通过内存映射的方式向lcd屏幕输出几个圆
/************************************************* * * file name:color.c * author :momolyl@126.com * ...
- manim边学边做--点
几何图形是manim中最重要的一类模块,manim内置了丰富的各类几何图形,本篇从最简单的点开始,逐个介绍manim中的几何模块. manim中点相关的模块主要有3个: Dot:通用的点 Labele ...
- 使用Typora编写后的md文件优雅的上传到博客(插件dotnet-cnblog的使用)
一.Typora的设置 如下图,设置图片上传位置 之后文章上的图片都会临时存放到文件同级目录下的xxx.Asster文件夹下面. 二.下载插件dotnet-cnblog 1.安装.Net Core S ...
- Kruskal和Prim模板
例题:P3366 [模板]最小生成树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Kruskal #include <bits/stdc++.h> #define d ...
- fs4412 I2C驱动基于Cortex-A9,mpu6050裸机程序,驱动,I2C架构,有这一篇够了
本文基于三星Cortex-A9架构,Exynos4412讲解I2C原理.以及基于I2C的mpu6050陀螺仪的数据读取实例(包括在裸机模式下数据的读取以及基于Linux驱动的读取).还会分析Linux ...
- Python向IP地址发送字符串
在Python中,向IP地址发送字符串通常意味着你需要通过某种协议来实现通信.最常见的协议包括TCP和UDP.这里,我将分别给出使用TCP和UDP协议向指定IP地址发送字符串的示例代码. 1.TCP. ...