CF1320D Reachable Strings
110和011互相转化,相当于就是0在连续两个1的情况下,移动两个位置
能够发现,0的位置的奇偶不会改变,且很多个0之间的相对位置不会改变
猜想考虑这个答案只跟0的奇偶性有关,下面小证一下:(注意下面所说的“奇偶”指的是两个字符串的分别第一个字母为奇数时的奇偶,不是总字符串的奇偶)
若0的相对位置奇偶不一样,显然非法
若0的相对位置奇偶一样,是否合法?假定我们把两个字符串的0都尽可能往左移动,再判断是否相等,这个方法正确性显然。
现在假设我已经将两个字符串尽可能把0往右移动了,如果是非法情况,也就是说有一个字符串无法移动到下一个和它奇偶性相同且另外一个字符串的存在0的那个位置,那么子串不可能出现连续两个1,必然会有0将他们隔断,然后就不符合上面假设的相对位置奇偶相同了
所以,直接对奇偶比较是正确的,直接奇偶起点分别哈希就行了,实现题解有很多,具体实现注意求一段子串哈希并不能用传统的方式求
#include<bits/stdc++.h>
#define il inline
#define maxn 200005
using namespace std;
typedef long long ll;
const int base=131;
const ll mod=998244353;
il int read(){
char c;int x=0,f=0;
while(!isdigit(c=getchar()))f|=(c=='-');
while(isdigit(c))x=(x*10)+(c^48),c=getchar();
return f?-x:x;
}
int n;
char s[maxn];
ll hs1[maxn],hs2[maxn],bs[maxn],id[maxn];
il int geths(int l,int r,int p){
if(p)return ((hs1[r]-hs1[l-1]*bs[id[r]-id[l-1]]%mod)%mod+mod)%mod;
else return ((hs2[r]-hs2[l-1]*bs[id[r]-id[l-1]]%mod)%mod+mod)%mod;
}
int main(){
n=read();
scanf("%s",(s+1));
bs[0]=1;
for(int i=1;i<=n;i++){
bs[i]=(bs[i-1]*base)%mod,id[i]=id[i-1];
if(s[i]=='1')hs1[i]=hs1[i-1],hs2[i]=hs2[i-1];
else{
hs1[i]=hs1[i-1]*base+1+(i&1),hs1[i]%=mod;
hs2[i]=hs2[i-1]*base+1+((i&1)^1),hs2[i]%=mod;
id[i]++;
}
}
int t=read();
while(t--){
int l1=read(),l2=read(),len=read();
int r1=l1+len-1,r2=l2+len-1;
geths(l1,r1,l1&1)==geths(l2,r2,l2&1)?puts("Yes"):puts("No");
}
return 0;
}
/*
3
010
1
1 3 1
*/
CF1320D Reachable Strings的更多相关文章
- 题解-Reachable Strings
题解-Reachable Strings 前置知识: \(\texttt{Hash}\) Reachable Strings 给一个长度为 \(n\) 的 \(\texttt{01}\) 串 \(s\ ...
- CF1320 Div1 D.Reachable Strings 题解
题目大意 给定一个长为\(n\)的01串\(S\),每次你可以对一个串的三个连续位置做:\(011 \rightarrow 110\),\(110 \rightarrow 011\)的操作. 有\(q ...
- Codeforces Round #625 (1A - 1D)
A - Journey Planning 题意: 有一列共 n 个城市, 每个城市有美丽值 b[i], 要访问一个子序列的城市, 这个子序列相邻项的原项数之差等于美丽值之差, 求最大的美丽值总和. ...
- 【Virt.Contest】CF1321(div.2)
第一次打虚拟赛. CF 传送门 T1:Contest for Robots 统计 \(r[i]=1\) 且 \(b[i]=0\) 的位数 \(t1\) 和 \(r[i]=0\) 且 \(b[i]=1\ ...
- Hacker Rank: Two Strings - thinking in C# 15+ ways
March 18, 2016 Problem statement: https://www.hackerrank.com/challenges/two-strings/submissions/code ...
- StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing the strings?
StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing t ...
- Multiply Strings
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- [LeetCode] Add Strings 字符串相加
Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. ...
- [LeetCode] Encode and Decode Strings 加码解码字符串
Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...
- [LeetCode] Group Shifted Strings 群组偏移字符串
Given a string, we can "shift" each of its letter to its successive letter, for example: & ...
随机推荐
- python实现打扑克方法
# 游戏规则:# 一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢.## 有以下几种牌:# 豹子:三张一样的牌,如3张6.# 同花顺:即3张同样花色的顺子, 如红桃 5.6.7# 顺子:又 ...
- [Python急救站]人脸识别技术练习
这段时间做了一个用于初学者学习人脸识别系统的程序,在上代码时,先给说说事前准备: 首先我们需要一个OpenCV的一个haarcascade_frontalface_default.xml文件,只要去G ...
- Solution - AGC060C
Link 简要题意:称一个长为 \(2^n-1\) 的排列 \(P\) 像堆,如果 \(P_i \lt P_{2i}\),且 \(P_i \lt P_{2i+1}\).给定 \(a,b\),设 \(u ...
- 三、Doris数据模型
DorisDB根据摄入数据和实际存储数据之间的映射关系, 将数据表的明细表, 聚合表和更新表, 分别对应有明细模型, 聚合模型和更新模型. Aggregate (聚合模型) : 将表中的列分为了Key ...
- 分享一张2020年用jaegertracing画的tomcat8.5启动流程图
今天整理电脑的时候意外发现一张tomcat8.5的启动流程图,是笔者2020年借助jaegertracing绘制的,想想还比较有意思,在这里分享一下,当初闲来无事折腾了小半天,具体过程已经是记不起来了 ...
- linux diff求两个文件的差集
awk 从文本中过滤出需要的ip queryId_20231109214653_ipBatchQueryResult.json {"id":0,"ip":&qu ...
- OpenNESS NTS 的前世今生
目录 文章目录 目录 NEV SDK NEV SDK 的软件架构 NEV SDK 的持续演进 OpenNESS NTS NTS 在 VM 场景中的应用 NTS 在 Container 场景中的应用 N ...
- Sphinx 自动化文档
目录 文章目录 目录 Sphinx 入门 reStructuredText 语法格式 标题.列表.正文.要点 表格 代码块 引用其他模块文件 引用静态图片 Sphinx Sphinx 是一个工具,它使 ...
- OpenStack Centos7 T版本搭建
目录 Centos7搭建OpenStack T版本 --上 1. 环境准备(所有节点操作) 1.1 修改主机名 1.2 关闭selinux 以及防火墙 1.3 修改hosts 1.4 配置时间同步 c ...
- Spring 对 Junit4,Junit5 的支持上的运用
1. Spring 对 Junit4,Junit5 的支持上的运用 @ 目录 1. Spring 对 Junit4,Junit5 的支持上的运用 每博一文案 2. Spring对Junit4 的支持 ...