首页 > 其他分享 >CF每日一道思维题——CF1503A - Balance the Bits

CF每日一道思维题——CF1503A - Balance the Bits

时间:2023-02-28 20:36:15浏览次数:38  
标签:str int 个数 CF cin 偶数 cnt1 CF1503A Balance

题意:

给定一个长度为 n 的 01 字符串 s。要求你构造两个合法的括号序列 a 和 b。

对于每一个 si=1,要求 ai=bi,反之 si=0,要求 ai!=bi​。

思路:

可以推导出下面几种情况无解

1.S开头为0,或结尾为0

2.0的个数为奇数(1的个数为奇数)

对于 '(',')' 的分配我们可以0,0分配,1,1分配

具体情况如下:

开头 '(' 与结尾 ')' 是一对我们可以不用去格外研究

对于其中的1,由于1的个数为偶数,我们可以让1出现第偶数次是a,b当前的括号为')', 繁殖2奇数次为'('

对于其中的0,由上述推导,偶数次时a当前为 ')' ,b为 '(' 奇数次反之

代码:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
  int t;
  cin >> t;
  while(t--)
  {
    int n, cnt1 = 0;
    string str;
    string a = "(", b = "(";
    cin >> n;
    cin >> str;
    for(int i = 0; i < n; i++)
      if(str[i]=='1')
        cnt1++;

    int cnt0;
    if((cnt1)%2 || str[0] == '0' || str[n-1] == '0')
      cout << "NO\n";
    else{
      cout << "YES\n";
      cnt1 = 0, cnt0 = 0;
      for(int i = 1; i < n-1; i++)
      {
        if(str[i] == '1')
        {
          cnt1++;
          if(cnt1 % 2)
          {
            a += '(';
            b += '(';
          }else{
            a += ')';
            b += ')';
          }
        }else{
          cnt0++;
          if(cnt0%2)
          {
            a += '(';
            b += ')';
          }else{
             a += ')';
             b += '(';           
          }
        }
      }
      a += ')';
      b += ')';
      cout << a << '\n';
      cout << b << '\n';
    }
  }
    return 0;
}

 

标签:str,int,个数,CF,cin,偶数,cnt1,CF1503A,Balance
From: https://www.cnblogs.com/lys-blogs123/p/17165818.html

相关文章

  • CF1575 VP记录
    VPTime:2023-2-2719:10~23:10(实际上因为要sleeping,22:00直接run了)A按题意模拟。ilboolcmp(nodex,nodey){stringu=x.s,v=y.s;for(inti=0;i......
  • CF1090F How to Learn You Score
    CF1090FHowtoLearnYouScorecodeforces:CF1090FHowtoLearnYouScoreSolution一道有趣的交互+构造。2600*。观察\(n\ge5\),我们不妨对\(5\)个数的情况进行......
  • 「CF1336E」Chiori and Doll Picking
    题目点这里看题目。给定一个长度为\(n\)的非负整数序列\(a\)和非负整数参数\(m\),保证\(\forall1\lei\len,0\lea_i<2^m\)。设\(U=\{1,2,3,\dots,n-1,n\}\)。......
  • RocketMQ - 消费者Rebalance机制
    客户端是通过Rebalance服务做到高可靠的。当发生Broker掉线、消费者实例掉线、Topic扩容等各种突发情况时,消费者组中的消费者实例是怎么重平衡,以支持全部队列的正常消费的......
  • [CF755G] PolandBall and Many Other Balls 题解
    [CF755G]PolandBallandManyOtherBalls题解题意概括有一排\(n\)个球,定义一个组可以只包含一个球或者包含两个相邻的球。现在一个球只能分到一个组中,求从这些球中......
  • 溢出标志位OF与进位标志位CF判断
    1、OF与CF概述OF(OverflowFlag,溢出标志位):有符号数之间加减运算的溢出标志CF(CarryFlag,进位标志位):无符号数之间加减运算的溢出标志快速判断(加法)(减法可转换为加法) 有......
  • CF813F - Bipartite Checking
    线段树分治。我们发现这个形式就是线段树分治,那么我们就线段树分治。我们考虑如何在按秩合并并查集上维护二分图的关系。假设我们现在在同一个并查集中的\(x\)和\(y\)......
  • CF813E - Army Creation
    这道题的主流做法是主席树。考虑离线怎么做,首先是莫队,但是很明显莫队很难往在线扩展。那么考虑线段树。首先进行一些分析,我们可以对于每个\(a\),将第\(i\)个\(a\)和......
  • 题解 CF1776F【Train Splitting】
    题意:有一个\(n\)点\(m\)边简单无向连通图,请用若干(至少为\(2\))种颜色对每条边染色,使得:对于每种颜色,仅由该颜色的边组成的生成子图不连通。对于每两种颜色,仅由该颜色......
  • Codeforces Global Round 15 CF1552 A~G 题解
    点我看题对两三年前的cf进行考古的时候偶然做到这场,像这种全是构造题和思维题的比赛还是比较少见的。题目本身很有意思,但是对于现场打比赛想上分的人来说体验就比较差了。......