Codeforces Round #712 (Div. 2)

简介: A. Déjà Vu

A. Déjà Vu


题意:有n个字符串,有一次操作在字符串任意位置填一个字符‘a’,求是否能构成一个非回文串,如果不能则输出NO能则输出添加一个’a’之后形成的非回文串。


思路:不难想到如果全是由字符a构成的字符串是NO,其他都有对应解,然后加在首尾的两种情况肯定是顶多只有一种会构成回文串,特判一下就好=。=判断的时候脑子短了。


#include<bits/stdc++.h>
using namespace std;
int  main ()
{
  int n,i,j,t;
  string s1;
  cin>>t;
  while(t--){
    cin>>s1;
    int f=0;
    for(i=0;i<s1.length();i++){
      if(s1[i]!='a')
        f=1;
    }
    if(f==0){
      cout<<"NO"<<endl;
    }
    else {
      cout<<"YES"<<endl;
      string s2;
      int d1=0;
      while(1){
        for(i=0;i<s1.length();i++){
          if(i==d1) s2+='a';
          s2+=s1[i];
        }
        string s3=s2;
        reverse(s2.begin(),s2.end());
        if(s3!=s2){
    cout<<s3<<endl;
          break;
        }
        d1=s1.length()-1;
        s2="";
      }
    }
  }
}


B. Flip the Bits


题意:给你两个字符串a、b,可以修改无限次,每次修改可以使得前缀的0和1相同的字符串的0变成1,1变成0。


思路:直接模拟就好,不会t,因为能操作的时候一定是0和1相同的时候,如果操作完会生成两种字符串,一种是反转一种是原串,如果其中有一种串能和答案串匹配那么就继续,然后指针从下一位开始。


总结:哎,又被这么简单的题卡了那么久= =,下次一定从b开始就仔细读题,由于上场没读明白被卡了一晚上x,这次猛冲完发现只能改前缀并且0和1相同。


#include<bits/stdc++.h>
using namespace std;
int main()
{
  std::ios::sync_with_stdio(false);
    cin.tie(NULL);
  string s1,s2;
  int n,i,j,t;
  cin>>t;
  while(t--){
    cin>>n>>s1>>s2;
    int m1=0,c0=0,c1=0,flag=0;
    for(i=0;i<n;i++){
      if(s1[i]=='0') c0++;
      else c1++;
      if(c1==c0){
        string s3;
        for(j=m1;j<=i;j++){
          if(s1[j]=='0') s3+='1';
          else s3+='0';
        }
        if(s3!=s2.substr(m1,i-m1+1)&&s1.substr(m1,i-m1+1)!=s2.substr(m1,i-m1+1)){
          flag=1;
          break;
        }
        else {
          m1=i+1;
        }
      }
}
    string s3;
    if(s1.substr(m1,i-m1+1)!=s2.substr(m1,i-m1+1)){
      flag=1;
    }
    if(flag==1){
      cout<<"NO"<<endl;
    }
    else {
      cout<<"YES"<<endl;
    }
  }
}


C. Balance the Bits


题意:给你个01串,求两个字符串ab,看是否能使得ab左右括号匹配,当01串其中某一位的位置为0,则ab串的括号必须相反,如果为1,则a和b串的括号必须相同


思路:将前半部分的1全部改成“(”,后半部分的1全部改成‘)’,再把0按照括号匹配做一下即可。


#include<bits/stdc++.h>
using namespace std;
int main()
{
  string s1;
  int t,n,i,j;
  cin>>t;
  while(t--){
    cin>>n>>s1;
    string s2,s3;
    int cnt1=0,flag=0,cnt0=0;
    for(i=0;i<s1.length();i++){
      if(s1[i]=='1') cnt1++;
    }
    if(s1[i]=='0'||s1[n-1]=='0') flag=1;
    int a=0,b=0;
    for(i=0;i<s1.length();i++){
      if(s1[i]=='1'){
        cnt0++;
        if(s1[i]=='1'&&cnt0<=cnt1/2){
          s2+='('; a++;
          s3+='('; b++;
        }
        else if(s1[i]=='1'&&cnt0>cnt1/2) {
          s2+=')'; a--;
          s3+=')'; b--;
        }
}
      else {
        if(a>0&&b>0){
          if(a>=b){
            s2+=')';a--;
            s3+='(';b++;
          }
          else {
            s2+='(';a++;
            s3+=')';b--;
          }
        }
        else if(a>0){
          s2+=')';a--;
          s3+='(';b++;
        }
        else if(b>0){
          s2+='(';a++;
          s3+=')';b--;
        }
        else {
          flag=1;
        }
      }
      if(a<0||b<0){
        flag=1;
//        cout<<s2<<endl<<s3<<endl;
      }
    }
    if(flag==1){
      cout<<"NO"<<endl;
    }
    else {
      cout<<"YES"<<endl;
      cout<<s2<<endl<<s3<<endl;
    }
  }
}
相关文章
|
7月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
算法 C++
单调栈(C/C++)
单调栈(C/C++)
如何绘制PAD图和N-S图(详细步骤)
如何绘制PAD图和N-S图(详细步骤)
3263 0
|
存储 前端开发 中间件
『软件工程10』结构化系统分析:数据流图和字典案例分析
该文章通过具体案例分析了在软件工程中如何运用数据流图和数据字典来进行结构化系统分析,帮助明确系统的信息流程和数据定义。
『软件工程10』结构化系统分析:数据流图和字典案例分析
|
存储 关系型数据库 MySQL
|
资源调度 算法 数据可视化
贝叶斯 RStan 包入门教程
贝叶斯 RStan 包入门教程
3240 0
|
5天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
8天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
9418 76
|
6天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
4809 13
|
7天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
4936 11