lmpp 教你对着样例得到做法.jpg

题意:给定一个长度为 $ n $ 的字符串 A,要求你构造一个字符串 B,使得 A 是 B 的子序列且 A 不是 B 的子串。

首先给出无解的判断方法:

if(n==1||n==m||(n==2&&A[1]!=A[2])){
printf("-1\n");continue;
}

无解的判断方法很好理解吧 qwq。

然后观察样例:

样例:

010->01110
1101->10100101
11111->111101

除了第二个,第一个和第三个是不是都是在 原串中插入一段 \(0\) 或 \(1\) 啊?

思考这样做的正确性。B一定是 A 的子串,但 A 真的不是 B 的子序列吗?

好像如果能够把控中间插入的是 \(0\) 还是 \(1\),那么 A 就不是 B 的子串!

至于这个位置,分两种情况讨论:

  1. A 串存在一个位置 \(i\) 使 \(A_i=A_{i+1}\)。

肯定在 \(i\) 的后面插入一串和 \(A_i\) 相反颜色的字符串啊!

  1. 不存在这个位置

那么整个串就是 \(0101010101...\) 或者 \(10101010101...\),在中间随便一个位置插入就行,\(0\) 和 \(1\) 都可以。

不过要注意一下判断当 \(n=3\) 的时候有可能出锅。

#include<cstdio>
const unsigned M=2e6+5;
char A[M];unsigned T,n,m;
signed main(){
register unsigned i,j;bool f;
scanf("%u",&T);
while(T--){
scanf("%u%u%s",&n,&m,A+1);f=true;
if(n==1||n==m||(n==2&&A[1]!=A[2])){
printf("-1\n");continue;
}
for(i=1;i<n;++i){
if(A[i]==A[i+1]){
for(j=1;j<=i;++j)printf("%c",A[j]);
for(j=1;j<=m-n;++j)putchar(A[i]=='0'?'1':'0');
for(j=i+1;j<=n;++j)printf("%c",A[j]);printf("\n");f=false;break;
}
}
if(f){
if(n==3){
printf("%c%c",A[1],A[2]);
for(i=1;i<=m-n;++i)printf("%c",A[2]);printf("%c\n",A[3]);
}
else{
for(i=1;i<=n-2;++i)printf("%c",A[i]);
for(i=1;i<=m-n;++i)printf("%c",A[n-2]);printf("%c%c\n",A[n-1],A[n]);
}
}
}
}

LGP7814题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 利用babel将es6语法转es5的简单示例

    前言 Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行. 这意味着,你可以现在就用ES6编写程序,而不用担心现有环境是否支持. 文件目录结构 生成包管理配置文件pa ...

  2. 【转】JVM--内存区域划分

    [原文地址]https://blog.csdn.net/sd4015700/article/details/50109939 Eden Space.Survivor Space.Tenured Gen ...

  3. springBoot2.*使用redis集群/单机方法

    在springboot1.x系列中,其中使用的是jedis,但是到了springboot2.x其中使用的是Lettuce. 此处springboot2.x,所以使用的是Lettuce.关于jedis跟 ...

  4. 关于Miller-Rabin与Pollard-Rho算法的理解(素性测试与质因数分解)

    前置 费马小定理(即若P为质数,则\(A^P\equiv A \pmod{P}\)). 欧几里得算法(GCD). 快速幂,龟速乘. 素性测试 引入 素性测试是OI中一个十分重要的事,在数学毒瘤题中有着 ...

  5. JMeter使用流程

    JMeter使用流程 首先我们要新建一个线程组,线程组的作用模拟多个访问对象,对系统可以进行压力测试 添加"HTTP Cookie管理器": 添加"Http请求默认值&q ...

  6. R数据分析:数据清洗的思路和核心函数介绍

    好多同学把统计和数据清洗搞混,直接把原始数据发给我,做个统计吧,这个时候其实很大的工作量是在数据清洗和处理上,如果数据很杂乱,清洗起来是很费工夫的,反而清洗好的数据做统计分析常常就是一行代码的事情. ...

  7. ajax的发展

    ajax(Asynchronous Javascript and XML)异步javascrip和XMl. ajax只是一种web交互方法.在客户端(浏览器)和服务区段之间传输少量的信息.从而为用户提 ...

  8. CentOS 7 编译部署LAMP环境

    文章目录 1.需求以及环境准备 1.1.版本需求 1.2.环境准备 1.3.安装包准备 2.编译升级Openssl 2.1.查看当前Openssl版本 2.2.备份当前版本Openssl文件 2.3. ...

  9. 【性能测试实战:jmeter+k8s+微服务+skywalking+efk】系列之:性能监控、分析、调优等

    说明: 本文是基于虚拟机演示的,资源有限 skywalking中拓扑图 kubectl get po -A -owide 测试执行:单场景 查询礼品 jmeter -n -t gift.jmx -l ...

  10. Smartbi:利用好excel分析工具,数据分析都是小case!

    数据分析听起来好像很高端的样子,但是实际上在一些IT高手的眼里,只需要掌握以下几个excel数据分析小工具的使用,你也能够成为别人眼中的数据大神! 1.excel数据分析工具--条件格式 快速找出符合 ...