当前位置: 首页 > news >正文

Bobo String Construction 2023牛客暑期多校训练营4-A

登录—专业IT笔试面试备考平台_牛客网

题目大意:给出一字符串t,求一个长为n的字符串,使t+s+t中包含且仅包含两个t

1<=n<=1000;测试样例组数<=1000

思路:一开始很容易想到如果t里有1,s就全0,否则s就全1,但当t=a+n*0/n*1+a这样时,例如001000001,110111110,n=3,这时s就对应的不能等于全0/全1,但至少有一种可以,也就是对于前者我们可以选111,对于后者选000,所以我们全0或全1都试一下,用kmp分别检验是否合法,都不合法就输出-1(但经测试其实没有-1的情况)

#include<bits/stdc++.h>
#define P pair<int,char>
using namespace std;
const int N = 1e3 + 5;
char str[N], pattern[N];
int fail[N];
int a[N];
int n;
string t,s="";
void getfail(string p, int plen)
{//取得p的失配指针fail[0] = 0, fail[1] = 0;for (int i = 1; i < plen; i++){int j = fail[i];while (j && p[i] != p[j]){j = fail[j];}fail[i + 1] = p[i] == p[j] ? j + 1 : 0;}
}
int kmp(string s, string p)
{//求s的子串中有多少个pint cnt = 0;//记录答案int last = -1;//记录上一次匹配的位置int slen = s.size(), plen = p.size();getfail(p, plen);int j = 0;for (int i = 0; i < slen; i++){while (j && s[i] != p[j]){j = fail[j];}if (s[i] == p[j]){j++;}if (j == plen){cnt++;last = i;}}return cnt;
}
bool check()
{string temp = t + s + t;if(kmp(temp,t)>2){return false;}return true;
}
int main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);int T;cin>>T;while(T--){cin>>n;cin>>t;s="";for(int i=0;i<n;i++){s+="0";}if(check()){//全0试试cout<<s<<endl;continue;}s="";for(int i=0;i<n;i++){s+="1";}if(check()){//全1试试cout<<s<<endl;continue;}//cout<<"-1"<<endl;}return 0;
} 

http://www.lryc.cn/news/101938.html

相关文章:

  • 【React学习】React父子组件通讯
  • NASM汇编
  • 第三章 HL7 架构和可用工具 - 使用 HL7 架构结构页面
  • spring注解驱动开发(一)
  • Vue3搭建启动
  • 阻塞队列(模拟实现)
  • VScode中python的相对路径与绝对路径 FileNotFoundError: [Errno 2] No such file or directory
  • Unity XML2——C#读写XML
  • 带wiringPi库的交叉编译 ---宿主机x86Ubuntu,目标机ARMv8 aarch64(香橙派)
  • 数据仓库基础知识
  • M 芯片的 macos 系统安装虚拟机 centos7 网络配置
  • AcWing 3708. 求矩阵的鞍点
  • web前端开发工程师的具体职责范本(合集)
  • 从源程序到可执行文件的四个过程
  • C++部署学习
  • linux下lazarus开发ide里 BGRAControls控件库comboBox示例
  • Redis学习路线(9)—— Redis的场景使用
  • 糟了,数据库主从延迟了!
  • VUE,子组件给父组件传递参数,props 自定义属性,ref
  • 【Oracle系列】- Oracle数据迁移
  • Linux环境安装MySQL(详细教程)
  • 23. Mysql中的排序规则
  • MongoDB 基础学习记录
  • Visual Studio2022报错 无法打开 源 文件 “openssl/conf.h“解决方式
  • 【更新公告】Airtest更新至1.3.0.1版本
  • SQL语句集锦
  • 【多线程中的线程安全问题】线程互斥
  • 抖音seo短视频矩阵系统源代码开发技术分享
  • flutter实战(01)windows桌面版 修改应用logo、名称、显示位置、显示大小
  • 校园基础设施资源管理