首页 > 其他分享 >G. Anya and the Mysterious String

G. Anya and the Mysterious String

时间:2024-07-15 13:07:49浏览次数:12  
标签:insert 26 bad3 String int cin Mysterious Anya bad2

原题链接

题解

对于区间全部元素 \(+x\)
等价于对 差分数组的 \(d[l]+=x\),\(d[r+1]-=x\)
也就是只修改了两个点
如果存在回文串,要么是 \(s[i]==s[i-1]\) 要么是 \(s[i]==s[i-2]\) ,所以我们可以用 \(set\) 维护23回文串的右端点

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;


void solve()
{
    int n,q;
    cin>>n>>q;
    string s;
    cin>>s;
    s=' '+s;

    vector<int> d(n+5);
    for(int i=1;i<=n;i++) d[i]=s[i];
    for(int i=n;i>1;i--) d[i]-=d[i-1];

    set<int> bad2,bad3;
    auto upd=[&](int i)
    {
        bad2.erase(i);
        bad3.erase(i);
        if(i<0||i>n) return;
        if(d[i]%26==0) bad2.insert(i);
        if(i>1&&(d[i]+d[i-1])%26==0) bad3.insert(i);
    };
    for(int i=1;i<=n;i++) upd(i);


    while(q--)
    {
        int op;
        cin>>op;
        if(op==1)
        {
            int l,r,x;
            cin>>l>>r>>x;
            d[l]+=x;
            d[l]%=26;
            d[r+1]-=x;
            d[r+1]%=26;
            for(int i:{0,1})
                {
                    upd(l+i);
                    upd(r+1+i);
                }
        }
        else
        {
            int l,r;
            cin>>l>>r;
            auto it2=bad2.insert(r+1).first,it3=bad3.insert(r+1).first;
            bool flag=0;
            if(it2!=bad2.begin()&&*prev(it2)-1>=l) flag=1;
            if(it3!=bad3.begin()&&*prev(it3)-2>=l) flag=1;
            if(flag) cout<<"no\n";
            else cout<<"yes\n";
            upd(*it2);
            upd(*it3);
        }
    }
}
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) solve();
    return 0;
}


标签:insert,26,bad3,String,int,cin,Mysterious,Anya,bad2
From: https://www.cnblogs.com/pure4knowledge/p/18302953

相关文章

  • 深入理解Java中的String类
    深入理解Java中的String类大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在这篇文章中,我将详细介绍Java中的String类,并结合实际代码示例,帮助大家更好地理解和应用String类。1.String类概述String类是Java中最常用的类之一,用于表示不可变的字符序列。St......
  • C++字符串String和字符串字面量String Literals
    在C++中,字符串(String)是一种用于表示和处理文本数据的基本类型。C++提供了两种主要的字符串类型:C风格字符串(C-StyleString):使用字符数组表示。标准库字符串(std::string):使用标准库中的std::string类表示。1.C风格字符串C风格字符串是一个以空字符(\0)结尾的字符数组。以下是......
  • StringBuffer和StringBuilder
    publicfinalclassStringBufferextendsAbstractStringBuilderimplementsSerializable,CharSequence{publicStringBuffer(){super(16);}publicsynchronizedStringBufferappend(Stringstr){super.append(str);r......
  • Check if String is Happy
    Astringishappyifeverythreeconsecutivecharactersaredistinct.defcheck_if_string_is_happy1(input_str): check=[] fora,b,cinzip(input_str,input_str[1:],input_str[2:]): ifa==borb==cora==c: check.append(False) else: check......
  • flutter pub get 的时候:A dependency specification must be a string or a mapping.
    想在pubspec.yaml文件中添加字体:报错了fonts:-family:MiaoZifonts:-asset:assets/fonts/MiaoZi-YunYingTi-2.ttfweight:500看了这篇文章解决了我原来是加在dependencies:flutter:sdk:flutter#新添加的依赖fonts:......
  • D2. Sum over all Substrings (Hard Version)
    原题链接题解code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;lldp[1000005]={0};voidsolve(){lln,ans=0;cin>>n;strings;cin>>s;s=""+s;//使字符串1索引化for(lli=1......
  • C# save image file as string file and convert string as image ,save as image fil
    privatevoidConvertImageToString(){byte[]bytesArr=File.ReadAllBytes(SelectedBk.ImgUrl);stringimgBase64Str=Convert.ToBase64String(bytesArr);imgFileName=$"{DateTime.Now.ToString("yyyyMMddHHmmssffff")}_{Guid.NewGu......
  • C#经典面试题:执行string abc=“aaa“+“bbb“+“ccc“共分配了多少内存?
    C#经典面试题:执行stringabc="aaa"+"bbb"+"ccc"共分配了多少内存?这是一个经典的基础知识题目,它涉及了字符串的类型、堆栈和堆的内存分配机制,因此被很多人拿来考核开发者的基础知识功底。首先,我们都知道,判断值类型的标准是查看该类型是否会继承自System.ValueType,通过查看和......
  • C# winform e.Graphics.DrawString 旋转打印一例
    前段时间的合格证标签打印老是卡纸,车间将纸竖过来放卡纸少很多,程序也要做修改,在原程序上加了以下两行代码;e.Graphics.TranslateTransform(285,685);e.Graphics.RotateTransform(-90.0F);第一行的两个坐标,要一点一点调试,没有找到什么科学的......
  • 【C++修行之道】string类的使用
    目录一.C语言中的字符串二、标准库中的string类(了解)2.1string类(了解)2.2帮助文档阅读三、string类的常用接口说明3.1 string类对象的常见构造 3.2 string类对象的容量操作3.3 string类对象的访问及遍历操作字符串类的简单实现3.4 string类对象的修改操作......