首页 > 其他分享 >B. Nezzar and Binary String

B. Nezzar and Binary String

时间:2024-07-16 19:51:36浏览次数:17  
标签:Nezzar Binary node String int ll tree tag r1

原题链接

题解

正着来发现很怪,倒着来发现顺多了

code

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

ll tree[8*N]={0};
ll tag[8*N]={0};
string a,b;

void build(int node,int l,int r)
{
    tag[node]=-1;
    if(l==r)
    {
        tree[node]=b[l]-'0';
        return ;
    }

    int mid=(l+r)/2;
    build(node*2,l,mid);
    build(node*2+1,mid+1,r);
    tree[node]=tree[node*2]+tree[node*2+1];
}

void pushdown(int node,int l,int r)
{
    if(tag[node]==-1) return;

    tree[node]=(r-l+1)*tag[node];
    if(l!=r)
    {
        tag[node*2]=tag[node];
        tag[node*2+1]=tag[node];
    }
    tag[node]=-1;
}
bool flag=1;
int query(int node,int l1,int r1,int x,int y)
{
    pushdown(node,l1,r1);
    if(l1>y||r1<x) return 0;
    if(l1>=x&&r1<=y)
    {
        return tree[node];
    }

    int mid=(l1+r1)/2;
    return query(node*2,l1,mid,x,y)+query(node*2+1,mid+1,r1,x,y);
}

void update(int node,int l1,int r1,int x,int y,int val)
{
    pushdown(node,l1,r1);
    if(l1>y||r1<x) return ;

    if(l1>=x&&r1<=y)
    {
        tag[node]=val;
        pushdown(node,l1,r1);
        return;
    }

    int mid=(l1+r1)/2;
    update(node*2,l1,mid,x,y,val);
    update(node*2+1,mid+1,r1,x,y,val);
    tree[node]=tree[node*2]+tree[node*2+1];
}
int l[2*N],r[2*N];

void solve()
{
    int n,q;
    cin>>n>>q;

    cin>>a>>b;
    a=' '+a;
    b=' '+b;

    build(1,1,n);
    for(int i=1;i<=q;i++) cin>>l[i]>>r[i];

    flag=1;
    for(int i=q;i>=1;i--)
    {
        int one=query(1,1,n,l[i],r[i]);
        //printf("ones:%d\n",one);
        if(one*2==r[i]-l[i]+1)
        {
            flag=0;
            break;
        }

        int id=(one*2>r[i]-l[i]+1);
        update(1,1,n,l[i],r[i],id);
    }
    for(int i=1;i<=n;i++)
    {
        //printf("%d's   query:%d\n",i,query(1,1,n,i,i));
        if(query(1,1,n,i,i)!=a[i]-'0') flag=0;
    }
    if(flag) puts("yes");
    else puts("no");
}
int main()
{
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) solve();
    return 0;
}


标签:Nezzar,Binary,node,String,int,ll,tree,tag,r1
From: https://www.cnblogs.com/pure4knowledge/p/18306005

相关文章

  • C. Nezzar and Symmetric Array
    原题链接真恶心code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constllN=114514;lla[200005],d[200005];boolsolve(){lln;cin>>n;for(lli=1;i<=2*n;i++)cin>>d[i];sort(d+1,d+1+2*n);for(i......
  • bluz glib编程 --- GVariant Format Strings 介绍
    GVariantFormatStrings类型字符串实例分析(sa{sv}as)外层是元组类型,内含三个成员,分别是字符串s字典类型数组a{sv},字符串作为key,variant作为value字符串类型数组as(i@ii)外层是元组类型,内含三个成员,分别是gint类型数字类型ivariant类型@i,对应数字......
  • QT字符串QString
    QString#include<QString>追加字符QStringstr1="hello";QStringstr2="world";str1.append(str2);//str1="helloworld"str1.append("!");//str1="helloworld!......
  • G. Anya and the Mysterious String
    原题链接题解对于区间全部元素\(+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>#definelllonglon......
  • 深入理解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)结尾的字符数组。以下是......
  • Solution - Codeforces 1311E Construct the Binary Tree
    先去考虑找一下无解条件。首先就是有\(d\)关于\(n\)的下界\(L\),就是弄成一颗完全二叉树的答案。其次有\(d\)关于\(n\)的上界\(R\),就是成一条链的样子。首先当\(d<L\)或\(R<d\)时显然无解。对于\(L\led\leR\)又如何去判定。能发现没有一个比较好的判定......
  • 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:......