首页 > 其他分享 >多校 A 层冲刺 NOIP2024 模拟赛 04

多校 A 层冲刺 NOIP2024 模拟赛 04

时间:2024-10-09 19:59:55浏览次数:6  
标签:子串 前缀 04 后缀 复杂度 多校 模数 NOIP2024

多校A层冲刺NOIP2024模拟赛04

T 02表示法

签到题

记得有一道普及题是没加高精的原吧...

将原数高精除变为二进制,然后记搜就好了。

T 子串的子串

签到题

注意到 \(n\) 很小支持 \(O(n^2)\) 的操作,可以直接预处理出所有 \(l,r\) 的个数,预处理方式可参考数颜色一题,对于相同的子串只记录随靠右的贡献。对于判断前驱可以 \(hash\) + \(unordered_map\) 由于串比较多,考虑聪明一点记录前驱,可以按长度分组做,这样每组最多有 \(O(n)\) 个子串 \(hash\) 冲突概率大大降低,常数也就变小了。

时间复杂度为 \(O(wn^2+q)\)。

T 魔法咒语

trie树,计数题

首先用 trie 树对所有前后缀去重,直接正反插入一遍就好了。

现在考虑怎样拼接前后缀才能做到不重不漏,发现如果直接拼接会计重是因为一个前缀的后缀与一个后缀的前缀相等,导致拼接时结果相同结果的断点有多个,考虑枚举前缀,对于一个前缀在其 trie 树中所对应的结点,不将结点子树中已有字符的贡献加入,这样就保证了上述情况只会计算一次,但是会有一种情况会算漏,即刚好以子树中存在的字符为结尾,直接特判记录单个后缀字符即可,以及特判长度为 1 的串就行了。

时间复杂度为 \(O(w\sum |s|)\),\(w\) 为字符集大小 。

T 表达式

crt,线段树

首先看到有一些数据点的模数很小,从而产生以模数为值域,预处理出一段区间内这个值域内数从左到右依次计算这个区间最后的值,这个东西显然是具有结合律的,可以上线段树。

但是对于其他点来说时间复杂度直接爆炸了,每一次区间合并时间复杂度都是 \(O(P)\) 的。

注意到题目给出的模数并不是一个质数,考虑拆解模数,然后分别做上述相同的操作,最后 crt 合并就行了。前 3 个点依旧需要暴力。

时间复杂度为 \(O(Snlogn)\),\(S\) 为模数拆解后的和。

p

标签:子串,前缀,04,后缀,复杂度,多校,模数,NOIP2024
From: https://www.cnblogs.com/07Qyun/p/18454948

相关文章

  • 多校A层冲刺NOIP2024模拟赛03
    T1.colorfu正难则反,直接枚举横行,枚举右边界,如果相同,则会对后面以及它本身统计产生\(1\)的贡献,我们直接开个桶统计一下。点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1000+107;intn,m;inta[N][N],cnt[N*N];intsum;......
  • [44] (多校联训) A层冲刺NOIP2024模拟赛04
    A.02表示法这题放在ABCD题我可能不会奇怪,但是它放模拟赛T1了赛时代码#include<bits/stdc++.h>usingnamespacestd;classnum_string{ private: stringx; inlinevoiddevided_2(){ stringans="";intnow=0; for(inti=0;i<=(int)x.length()-1;++i){ ......
  • 多校A层冲刺NOIP2024模拟赛04
    多校A层冲刺NOIP2024模拟赛04学校OJ赛时rank28,T10pts,T2100pts,T320pts,T425ptsaccodersrank15,T1100pts,T2100pts,T320pts,T425pts不是,也没人告诉我两个OJ文件名不一样啊02表示法递归+高精除低精。点此查看代码#include<bits/stdc++.h>#include<bits/extc++.h>//......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛04
    Rank赤石场。A.02表示法签。若干天前在洛谷随到过,不过当时只看了眼讨论区就走了www还好本来不是很难。发现大体上是一个拆分二的幂的问题,从大到小枚举2的幂,判断有没有这个幂只用比较大小关系,然后再对指数做一个同样的操作,递归至不大于2为止,注意\(2^1\)不用输出(1......
  • 多校A层冲刺NOIP2024模拟赛04
    多校A层冲刺NOIP2024模拟赛04\(T1\)A.02表示法\(0pts/100pts\)弱化版:luoguP1010[NOIP1998普及组]幂次方递归模拟即可,二进制分解时需要写高精除低精。点击查看代码intr[810],t[810];chars[810],id[810][10];stringa;intchu(chars[]){ intn=strlen(s......
  • IEC104规约的秘密之七----配置参数t1,t2,t3
    104通讯前需要配置通讯参数,一般有如下参数:IP地址,端口号,k,w,t1,t2,t3,公共地址,遥控超时参数,104主规约还有一个t0参数。本次只讲解t1,t2,t3这两个参数。这三个都是超时时间,t1用于两个地方,一个是发送的I帧没有得到及时的确认,在规约文本中有如下图:B站发送I(0,0)帧后,开始计时,A站回......
  • C++ day04(友元 friend、运算符重载、String字符串)
    目录【1】友元friend1》概念2》友元函数 3》友元类 4》友元成员函数 【2】运算符重载1》概念2》友元函数运算符重载 ​编辑 3》成员函数运算符重载4》赋值运算符与类型转换运算符重载 5》注意事项【3】String字符串类【1】友元friend1》概念定义:......
  • XYD1004CSPS
    T1序列[贪心,模拟]Description给定一个序列,每次可以将一个数减一,求让所有数字互不相同的最小操作数,\(0\)除外,也就是\(0\)可以相同。Solution贪心地,从大到小考虑每个数,都只需要减到第一个没有数出现的数。开个桶从大到小累计答案即可。T2XYD[构造]Description给定\(......
  • 【堆】【优先队列】[NOIP2004]合并果子
    https://ac.nowcoder.com/acm/contest/22669/I堆的用法Type:队列中存储元素的类型。例如int,double,pair<int,int>等。Container:底层存储数据的容器类型,默认为vector,但可以换成deque或其他容器。Compare:比较函数,用于决定优先级顺序。默认是less,表示最大堆。如果使用......
  • 20241008_Day 04
    helloworld!1.安装NOTEPAD++2.新建代码文件夹3.新建JAVA文件1.可以新建text文件,修改后缀为.java2.打开方式修改为notepad+++4.编写代码具体为:javapublicclassHello{publicstaticvoidmain(String[]args){System.out.print("Hello,world!");}}5.......