1.5k1 分钟

参考字符串哈希中多项式 $Hash $函数定义: $f(s) = \sum_{i=1}^{l} s[i] \times b^{l-i} \pmod M$及其推论: $f(s[l..r])=f_r(s)-f_{l-1}(s) \times b^{r-l+1}$ 我们可以写出$Hash$的实现: const LL M = 33951943; const LL BA = 233; hash_at[1] = (sum[1] - sum[0]) % 3; for (int k = 2; k <= sum
1311 分钟

终于a了,我的眼睛真得捐掉 sum[1] = s[0] - '0'; 竟然写成 sum[1] = s[1] - '0'; 吐了,怪不得11过不去
6.1k6 分钟

Description

QwQ是所有`01`串的控制者,但因为`0`是虚的,`1`才是实的,所以QwQ的遥控器只能控制`1`而不能直接控制`0`。

不幸的是,QwQ的遥控器坏了,控制力有所衰减,只能必须是连续的三个1才能被QwQ所控制。

对于一个01可以对它实施这样一个操作:选择中三个连续的1,把这三位向前或向后移动任意多位。

比如说这样: 001110110010 000111110010

或者这样:001110110010 111000110010

如果串可以通过QwQ的若干次操作得到,QwQ就认为相等的。

有一天QwQ终于发现了宇宙的本质就是一个长度为01但大部分人并不能理解这个神奇的宇宙,于是他们向01串的造物主QwQ问了个问题,每个问题的形式如下:中的第位到第位所组成的子串是否等于中的第位到第位所组成的子串?

Input

第一行输入2个正整数,表示宇宙串的长度和询问次数

第二行输入1个长度为01串表示QwQ对整个宇宙的理解。

接下来qq行每行四个正整数,表示每个询问。

题目保证对于每个询问,,

Output

对于每个询问,输出一行`Yes`或`No`。
一开始的做法是先求前缀和然后找0的位置并用辅助数组jl[]记录当前k字符上一'0'的索引,若k字符为'0'则记录其本身的索引

然后7.8.9的测试点就爆掉了

最后AC的做法是用BKDR_hash来回应问询,加上快读到70ms

1.2k1 分钟

对数据大于一万的就筛到该数的平方根 #include <stdbool.h> #include <stdio.h> #include<math.h> #define LL long long #define IN freopen("in.txt", "r", stdin) #define OUT freopen("out.txt", "w", stdout) #define scan(x) scanf("%d", &x) #define sqr(x)