首页 > 其他 > 详细

百题计划-6 codeforces 651 div2 E. Binary Subsequence Rotation 01序列集合划分,2个队列处理

时间:2020-08-21 23:06:11      阅读:87      评论:0      收藏:0      [点我收藏+]

https://codeforces.com/contest/1370/problem/E

队列元素以末尾字符为结尾的序列就好了,这里队列里的元素不重要,队列size重要

技术分享图片
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
const int maxn=1000100;
const int INF=(1LL<<30);

int n;
string s,t;

bool check(string& s,string& t){
    int c1s=0,c1t=0;
    for(int i=0;i<n;i++) c1s+=s[i]==1,c1t+=t[i]==1;
    return c1s==c1t;
}

int main(){
    while(cin>>n>>s>>t){
        if(!check(s,t)){
            puts("-1");continue;
        }
        int q[2][2];
        memset(q,0,sizeof(q));
        int res=0;
        for(int i=0;i<n;i++){
            if(s[i]==t[i]) continue;
            int c=s[i]-0;
            int tag=0;
            if(q[c^1][c^1]>0) q[c^1][c^1]--,tag=1;
            else if(q[c][c^1]>0) q[c][c^1]--,tag=2;
            if(tag==0) q[c][c]++;
            else if(tag==1) q[c^1][c]++;
            else q[c][c]++;
        }
        cout<<q[0][1]+q[1][0]<<endl;
    }
    return 0;
}
View Code

 

百题计划-6 codeforces 651 div2 E. Binary Subsequence Rotation 01序列集合划分,2个队列处理

原文:https://www.cnblogs.com/fool-ke/p/13543668.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!