题意

第一行给定两个数字\(n\) \(m\) \((m \ge n)\)分别代表给定字符串长度以及需要构造出的字符串长度

第二行给定一个长度为\(n\)的字符串 (假设原来的字符串是\(a\) 需要构造出来的字符串是 \(x\))

构造出的字符串需要满足 子序列与子串的定义

1.\(x\)的任意一个子串都与\(a\)不相同

2.\(x\)的某一个子序列和\(a\)相同

分析

  • 当 \(n=1\)的时候,显然无法存在\(x\)满足条件
  • 当 \(n=2\)的时候,如果两个字符串中的字符不同,显然构造不出
  • 当 \(n=m\)的时候,显然满足条件\(2\)的时候,\(x\)与\(y\)是一模一样的,无法满足条件\(1\)

假设现在以上三种情况均不可能发生

  • 我们可以找到每个与 他的下一个字符相同的字符,然后在这样一对字符中间加入一个与他们不相同的字符
  • 如果找不到在第一个字符(除了最后一个的任意一个字符均可)后面输出与它不相同的字符即可

AC_CODE

#define pb push_back
#include <bits/stdc++.h>
#define rep(i, b, s) for(int i = (b); i <= (s); ++i) using namespace std;
void solve() {
int n, m; scanf("%d%d", &n, &m);
string a; cin >> a;
// 三种不可能构造出的情况
if(n == 1 || n == m || n == 2 && a[0] != a[1]) {
puts("-1");
return;
}
//构造方式为找到每个与 他的下一个字符相同的字符,然后在这样一对字符中间加入一个与他们不相同的字符
// 如果找不到在第一个字符(除了最后一个的任意一个字符均可)后面输出与它不相同的字符即可 //寻找出 每个与 他的下一个字符相同的字符 存起来
vector<int> v;
for(int i = 0; a[i + 1]; i ++)
if(a[i] == a[i + 1]) {
v.pb(i);
}
int len = v.size(); if(!len) { // 找不到的情况
putchar(a[0]);
for(int i = 0; i < m - n; i ++ ) putchar(a[0] ^ 1);
rep(i, 1, n - 1) putchar(a[i]);
puts("");
return;
} int p = 0;
int ans = m - n;
for(int i = 0; a[i]; i ++ ) { // 找到了这样的字符
putchar(a[i]);
if(i == v[p] && ans) {
putchar(a[i] ^ 1);
p ++; ans --;
if(p == len) {
rep(j, 1, ans) putchar(a[i] ^ 1);
ans = 0;
}
}
}
puts("");
} signed main()
{
int T = 1;cin >> T;
while(T -- ) solve();
return 0;
}

洛谷P7814 「小窝 R3」心の記憶的更多相关文章

  1. 洛谷 P6222 - 「P6156 简单题」加强版(莫比乌斯反演)

    原版传送门 & 加强版传送门 题意: \(T\) 组数据,求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^n(i+j)^k\mu^2(\gcd(i,j))\g ...

  2. 洛谷 P4710 「物理」平抛运动

    洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...

  3. 洛谷比赛 「EZEC」 Round 4

    洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...

  4. 题解-洛谷P6788 「EZEC-3」四月樱花

    题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y ...

  5. 【洛谷4005】小Y和地铁(搜索)

    [洛谷4005]小Y和地铁(搜索) 题面 洛谷 有点长. 题解 首先对于需要被链接的两个点,样例中间基本上把所有的情况都给出来了. 但是还缺了一种从下面绕道左边在从整个上面跨过去在从右边绕到下面来的情 ...

  6. 【洛谷3674】小清新人渣的本愿(莫队,bitset)

    [洛谷3674]小清新人渣的本愿(莫队,bitset) 题面 洛谷,自己去看去,太长了 题解 很显然的莫队. 但是怎么查询那几个询问. 对于询问乘积,显然可以暴力枚举因数(反正加起来也是\(O(n\s ...

  7. 这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍

    今年3月份,在阿里云北京峰会上,阿里巴巴正式发布了“阿里巴巴小程序繁星计划”,截至当前,已经有成千上万的开发者加入这个计划,使得小程序得到蓬勃发展,然而不可避免的是,这些服务加重了对云端的开发部署.运 ...

  8. 洛谷 P7879 -「SWTR-07」How to AK NOI?(后缀自动机+线段树维护矩乘)

    洛谷题面传送门 orz 一发出题人(话说我 AC 这道题的时候,出题人好像就坐在我的右侧呢/cy/cy) 考虑一个很 naive 的 DP,\(dp_i\) 表示 \([l,i]\) 之间的字符串是否 ...

  9. 洛谷 P7360 -「JZOI-1」红包(Min-Max 容斥+推式子)

    洛谷题面传送门 hot tea. 首先注意到这个 \(\text{lcm}\) 特别棘手,并且这里的 \(k\) 大得离谱,我们也没办法直接枚举每个质因子的贡献来计算答案.不过考虑到如果我们把这里的 ...

随机推荐

  1. 【剑指Offer】平衡二叉树 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 日期 题目地址:https://www.nowcoder.co ...

  2. hdu-1593 find a way to escape(贪心,数学)

    思路:两个人都要选取最优的策略. 先求外层那个人的角速度,因为他的角速度是确定的,再求内层人的当角速度和外层人一样时的对应的圆的半径r1.外层圆的半径为d; 那么如果r1>=外围圆的半径,那么肯 ...

  3. 第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法

    第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-44-d ...

  4. 第48篇-native方法调用解释执行的Java方法

    举一个native方法调用解释执行的Java方法的实例,如下: public class TestJNI { static { System.load("/media/mazhi/sourc ...

  5. Class Activation Mapping (CAM)

    目录 概 主要内容 CAM Grad-CAM Grad-CAM++ Score-CAM 最后 代码 Zhou B., Khosla A., Lapedriza A., Oliva A. and Tor ...

  6. matplotlib 进阶之Legend guide

    目录 matplotlib.pyplot.legend 方法1自动检测 方法2为现有的Artist添加 方3显示添加图例 控制图例的输入 为一类Artist设置图例 Legend 的位置 loc, b ...

  7. [Guide]Google Python Style Guide

    扉页 项目主页 Google Style Guide Google 开源项目风格指南 - 中文版 背景 Python 是Google主要的脚本语言.这本风格指南主要包含的是针对python的编程准则. ...

  8. CS5211与PS8625参数差异|CS5211完全兼容PS8625|普瑞PS8625替代

    PS8625是一个DP显示端口 到LVDS转换器芯片,利用GPU和显示端口(DP) 或嵌入式显示端口(eDP) 输出和接受LVDS输入的显示面板.PS8625实现双通道DP输入,双链路LVDS输出.P ...

  9. EMQX源码编译过程

    以emqx4.0.7版本为例 1.安装erlang环境 可以参考:https://www.cnblogs.com/shanfeng1000/p/11951703.html 这里需要注意一下,要按照em ...

  10. 数据库SQL语言类型(DQL.DML.DDL.DCL)

    1.SQL语言 SQL(Structure Query Language)语言是数据库的核心语言. SQL是一个标准的数据库语言, 是面向集合的描述性非过程化语言. 它功能强,效率高,简单易学易维护. ...