div 2 c Binary String Copying

cpp 复制代码
#include<bits/stdc++.h>
using namespace std ;
using ll = long long;
using PII = pair<int,int>;
string s;
void solve(){
    int n,m;
    cin >> n >> m;
    //vector<int>s(n+1);
    vector<int>ne1(n+2,n+1);
    vector<int>pre0(n+2,0);
    cin>>s;
    s = " " + s;
    for(int i=1;i<=n;i++){
        pre0[i] = pre0[i-1];
        if(s[i] == '0'){
            pre0[i] = i;
        }
    }
    for(int i=n;i>=1;i--){
        ne1[i] = ne1[i+1];
        if(s[i] == '1'){
            ne1[i] = i;
        }
    }
    set<PII> s;
    while(m--){
        int l,r;
        cin>>l>>r;
        //cout<<ne1[l]<<" "<<pre0[r]<<endl;
        if(ne1[l] > pre0[r]){
            s.emplace(-1,-1);
        }else{
            s.emplace(ne1[l],pre0[r]);
        }
    }
    cout<<s.size();

}



int main(){
    int t;
    cin>>t;
    while(t--){
        solve();
        puts("");
    }
}

用最小的变换区间代表整个大区间

找到L右边最近的1 R左边最近的0 变换区间就在这两个之间

相关推荐
王老师青少年编程2 小时前
2025年【江苏“信息与未来”编程思维】真题及题解(T2:坐标变换)
c++·题解·真题·坐标变换·编程思维·江苏·信息与未来
CS创新实验室3 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
海石5 小时前
1563分的简单题,可能就简单在能被暴力AC
算法·leetcode
海石5 小时前
1400分的dp汗流浃背之【交替子数组计数】
算法·leetcode
奋发向前wcx5 小时前
P2590 树的统计 题目解析
数据结构·算法·深度优先
2023自学中5 小时前
C++ 内存追踪器
linux·c++
imbackneverdie6 小时前
AI4S不止于分子药物:以MedPeer为代表的科研基建打开产业新增量
大数据·人工智能·算法·aigc·科研·学术·ai 4s
额鹅恶饿呃7 小时前
C语言中的数据结构和变量
c语言·数据结构·算法
运行时记录8 小时前
prompt-optimizer skill
算法
万法若空8 小时前
【数据结构-哈希表】哈希表原理
数据结构·算法·散列表