牛客赛前集训营提高组(第二场)览遍千秋

这场数据实在是 太 弱 了

我和 @ZigZagKmp 分别造了 B 和 D 的 hack 数据,并一通操作之后联系上了命题人,命题人将 hack 数据加入了正式数据。

我们定义 \(f(x)=\gcd(x\) 除 \(1\) 之外的所有因子 \()\)。

即 \(x\) 除 \(1\) 外所有因子的 \(gcd\)。

询问 \(\sum_{i=a}^b f(i)\)。

考虑这些数,除了可以表示为 \(x=p^k\) 形式的数,其他的数 \(x\) 都至少有两个质因子,即 \(f(x)=1\)

也就是说 \(f(x) = \begin{cases}p & x = p^k\\1 & \text{otherwise}\end{cases}\)

用欧拉筛晒出 \([1,b]\) 中的质数,再枚举这些质数的次幂即可。

进行 Hack 活动时校 OJ 的场景。

我们定义 \(A\) “包含” \(B\) 的概念是 \(A \operatorname{and} B=B\) ,其中 \(\operatorname{and}\) 是位运算中的“按位与”。

现在给出一个集合 \(Q\) ,这个集合 \(n\) 个正整数,\(m\) 次询问。每次询问给出一个数字 \(x\) ,请回答集合 \(Q\) 中是否有一个数字包含 \(x\) 。

观察到值域为 \(10^6\) ,肯定从值域搞事情,很容易想到枚举是否删除二进制位。

发现 \(n\) 远小于 \(T\),直接预处理值域内的答案, \(O(1)\) 回答每个询问即可。

可以通过 dfs 每一个输入的 \(a_i\),对于 \(a_i\) 中每个为 \(1\) 的二进制位,dfs 是否删除。

同时,通过记忆化优化时间,因为如果一个数 \(p\) 已经被搜索过,就没必要再对 \(p\) 进行处理。

牛牛有一个 \(s\) 串, \(s\) 串仅由 \(26\) 个小写英文字母组成,他现在将 \(s\) 串进行了无限次的复制扩展成了一个无限循环串。

例如一开始 s="abc",那么牛牛就会将其变为 "abcabcabc..."

若某个字符串保留其原本字符出现的顺序,并且按照顺序取出若干个字符。可以不连续,可以不取。

我们称取出的这若干个字符连成的字符串为一个子序列。

若连续取出某个字符串的前 \(k\) 个字符,组成一个子串,我们称该字符串为原串长度为 \(k\) 的前缀。

对于一个字符串 \(t\) ,若某字符串的至少一个子序列为 \(t\) 。则称它是一个“含 \(t\) 序列串”

牛牛想要知道对于给定的 \(t\) ,他想要知道 \(s\) 的一个最短前缀满足它是一个“含 \(t\) 序列串”,它的长度有多长?

由于答案可能非常大,所以他要求你输出答案对 \(998244353\) 取余数后的结果即可。

特别的,如果S串不存在任何一个前缀满足他是一个“含 \(t\) 序列串”,请输出" \(-1\) "表示无解。

\(t\) 串中除了 \(26\) 个英文字母以外还会出现"*",表示一个通配符。统配符可以视为任意字母。

例如循环\(s\)串为"\(abcabcabcabc\)...",t串为"\(a*ca\)"时,最短含\(t\)序列前缀长\(4\)。而当\(t\)串为"\(a**ca\)"时,最短含\(t\)序列前缀长\(7\)。

除此之外,牛牛输入的t串还可能非常非常长,最长可以达到\(10^{10^{5}}\)这么长。

所以他想了一种压缩方法,来快速读入\(t\)串。

具体来说,它输入的\(t\)串中除了"*"和\(26\)个小写英文字母以外,还会跟有一些正整数。

在读入字符串时,这些数字表示它前面字母或者"*"重复的次数。

例如\(a5bc*3\),表示"\(aaaaabc***\)"。输入的正整数不含前导\(0\)。

恶臭大模拟。

牛牛被困在了一个房间里,他可以看到房间的出口,但是想要到达出口,需要经过 \(n\) 道闸门。我们可以根据这些闸门离牛牛的距离进行编号,离牛牛最近的闸门记为 \(1\) 号闸门,离牛牛最远的记为 \(n\) 号闸门。

牛牛每秒都可以选择前进到下一闸门,后退到上一闸门,或者原地不动。(从起点到第一道闸门,从第 \(n\) 道闸门到出口的时间也是一秒)

这些闸门在一些时刻是关闭的,无法通行,剩下的时刻是开启的,可以通行。

注意:如果牛牛所在的位置有一个闸门即将关闭,他在此时选择原地不动,就会被闸门夹到,变成牛排。牛牛想在不变成牛排的前提下走到出口,他想知道最短需要多少秒才能走到出口,如果他永远无法走到出口,输出 \(-1\) 。

THE END
0.2022牛客OI赛前集训营观察题目性质,可以发现,经过若干次操作后得到的结果一定是一个关于xx的分段函数,图像分为三段,且第一段和第三段斜率为0,中间斜率为1。那么只需要简单地记下拐点的坐标就可以表示这个函数。 简单分类讨论一下,可以线性处理出我们要的分段函数。 那么就很简单了,分BB块维护分段函数,每次修改暴力重构整个块,查询遍历每jvzquC41yy}/ewgnqiy/exr1FEN35<4r13<87@;360nuou
1.2024牛客OI赛前集训营提高组(第一场)查询只需要找到第一个 的位置,从这个位置可以走 边权到达 。 fib 树上博弈 问题可以看作每次删一条边 ,保留根节点所在的连通块,删不了边的一方输。 我们先用 Grundy Number 判断当前局面的胜负。定义 为以节点 为根的子树的 Grundy Number。如果 jvzquC41yy}/px|eqfks0lto1fote~xu18=3495223>:3?8;4;<
2.2023牛客OI赛前集训营提高组(第二场)2023牛客OI赛前集训营-提高组(第二场) T1 题意,给定正整数nnn,计算nnn个元素的集合1,2,⋯ ,n{1,2,\cdots,n}1,2,⋯,n,求所有非空子集和的乘积取模998244353998244353998244353后的结果。 其中1≤n≤2001\le n \le2001≤n≤200 首先,该集合的非空子集有2n−12^n-12n−1个,但子集和的最jvzquC41dnuh0lxfp0tfv8vsa8878A5331gsvrhng1jfvjnnu1745A525:7
3.提高级T3牛牛的凑数游戏2020牛客noip赛前集训营很容易发现对于一个区间,我们将其排序后,如果前iii个数之和+1小于第i+1i+1i+1个数,那么前iii个数之和+1是一定无法构造出来的,于是,我们就要找到第一个前缀和+1不存在的数。 很明显,如果用暴力的话,是明显会T掉的,只能拿30pts。 考虑如果当前前缀和为sumsumsum时,所有的小于sumsumsum的数都可以用来更新jvzquC41dnuh0lxfp0tfv8pmmui15:81ctzjeuj1fgzbkux134=36:562
4.牛客CSPS提高组赛前集训营4赛后总结TaylorSwift13牛客CSP-S提高组赛前集训营4 赛后总结 复读数组 分成3 种区间算答案: 一个块内的区间 两个块交界处,长度小于块长的区间 长度不小于块长的区间 对于第三种区间,容易发现每个区间的权值一样,只需要算出个数即可. 对于前两种空间,我的思路是:对于一个重复出现的元素,记第一次出现的这个元素贡献权值,然后讨论jvzquC41yy}/ewgnqiy/exr1Vcmq{Xykhz258u133>2;9=60jznn
5.牛客练习赛51D羊吃草腾讯云开发者社区牛客练习赛51的D题羊吃草是什么类型的题目? 如何解决牛客练习赛51中D题羊吃草的问题? 牛客练习赛51 D题羊吃草的解题思路是什么? 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_41603898/article/details/100593523 建图jvzquC41yy}/eutwf0zfpljpv0ipo8igxgrprnw1ctzjeuj137693@9
6.比赛总结——牛客网NOIP赛前集训营提高组模拟第一场比赛总结——牛客网 NOIP赛前集训营提高组模拟第一场 第一场打的很惨淡啊 t1二分+前缀最小值没想出来,20分的暴力也挂了,只有10分 t2数位dp,调了半天,结果因为忘了判0的特殊情况WA了一个点,亏死 t3emmmm.. 不会 imone说是DSU on tree的裸题 然后打了半个小时,A了qwq 题解回头再补jvzquC41yy}/ewgnqiy/exr1ftkbixso1r5:8::8494ivvq
7.2020牛客NOIP赛前集训营提高组(第三场)C本文详细介绍了如何使用树剖和线段树解决区间最值问题,并针对状态扩散进行优化。作者指出,树剖时只需一棵线段树即可,关键在于保证链上点的连续性。文章通过实例解析了如何处理祖先和后代方向的最值,并展示了区间修改和单点查询的操作。最后,讨论了初始化和清空操作的实现。 jvzquC41dnuh0lxfp0tfv8|gkzooa=8;82:268ftvkimg8igvcomu862;4:95?>