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

Bobo String Construction

登录—专业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/99548.html

相关文章:

  • 基于java在线个人网站源码设计与实现
  • Ubuntu18.04下编译qgc源码
  • Ros2_windows_install的学习笔记
  • 5、Kubernetes核心技术 - Controller控制器工作负载
  • 【java设计模式】创建型模式介绍(工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式)
  • Redis系列:Redis 的事务机制
  • 动静态网页、Django创建表关系、Django框架的请求生命周期流程图
  • 神经网络的初始化方法
  • 【SQL Server】DBCC CHECKDB只是一个数据库维护命令吗?
  • 三、Web安全相关知识
  • Android系统服务之AMS
  • Unity UGUI的EventTrigger (事件监听器)组件的介绍及使用
  • Matlab的SimuLink对FS32K144编程--内部数据存储Flash
  • 【MySQL】centos 7下MySQL的环境搭建
  • 【SpringCloud Alibaba】(四)使用 Feign 实现服务调用的负载均衡
  • ShardingSphere-Proxy水平分片详解与实战
  • PTA 1052 Linked List Sorting
  • 五,Eureka 第五章
  • yolov5目标框的融合(两个或多个框)
  • pythonAPI对接示API示例电商数据平台
  • 如何做好IT类的技术面试
  • 比memcpy还要快的内存拷贝,了解一下
  • 正则表达式常用字符及案例
  • 周训龙老兵参观广西森林安全紧急救援装备演练
  • [开发|java] java 将json转化java对象
  • 平台化的测试工具推荐|一站式测试平台RunnerGo
  • PCB封装设计指导(十五)验证封装的正确性
  • Godot 4 插件 - Utility AI 研究
  • 第八章:将自下而上、自上而下和平滑性线索结合起来进行弱监督图像分割
  • MySql忘记密码如何修改