Content

现有 \(T\) 次询问。 每次询问给定一个长度为 \(n\) 的 01 串,记为 \(A\)。回答应是一个字符串 \(B\),满足:

  • \(B\) 是长度为 \(m\) 的 01 串。
  • \(B\) 中不存在任意一个子串与 \(A\) 相同。
  • \(B\) 中存在至少一个子序列与 \(A\) 相同。

若有多解输出任意一个解。

数据范围:\(1\leqslant n\leqslant m\),\(1\leqslant\sum m\leqslant 2\times 10^6\),\(A_i\in\{0,1\}\)。

Solution

这里直接讲正解。

首先,下列情况不能够造出符合要求的 B:

  • \(n=1\)。
  • \(n=m\)。
  • \(n=2\) 且字符串是 0110

否则可以构造出一种方案。构造方案如下:

  1. 如果字符串形如 000...1 或者 111...0 的话,则先在第一个字符后面插入一个与第一个字符不同的字符(如果第一个字符是 1 则在后面插入 0,反过来则插入 1),然后如果长度不够的话就在后面不停地插入最后一个字符相同的字符直到长度达到 \(m\) 为止。
  2. 否则在原字符串最后一个字符之前插入 \(m-n\) 个与最后一个字符不同的字符即可。

是不是很简单呢?

Code

namespace Solution {
iv Main() {
MT {
int n, m;
read(n, m);
string s; cin >> s;
if(n == 1 || n == m) puts("-1");
else {
string ans = s.substr(0, n - 1);
int fl0 = 1, fl1 = 1;
F(int, i, 0, (int)ans.size() - 1) if(ans[i] != '0') fl0 = 0; else if(ans[i] != '1') fl1 = 0;
if((fl0 && s[n - 1] == '1') || (fl1 && s[n - 1] == '0')) {
if(n == 2) puts("-1");
else {
string ans2 = ""; ans2 += ans[0];
if(ans[0] == '0') ans2 += "1";
else ans2 += "0";
ans2 += s.substr(1, n - 1);
F(int, i, n + 1, m - 1) ans2 += s[n - 1];
cout << ans2 << endl;
}
continue;
}
if(s[n - 1] == '0') {
F(int, i, n, m - 1) ans += "1";
ans += s.substr(n - 1, 1);
} else {
F(int, i, n, m - 1) ans += "0";
ans += s.substr(n - 1, 1);
}
cout << ans << endl;
}
}
return;
}
}

洛谷八月月赛 II T2 题解的更多相关文章

  1. 洛谷八月月赛 II T1 题解

    Content 在大小为 \(n\) 的数字三角形中,第 \(i\) 行包含有 \(i\) 个数字,数字从上到下,从左到右依次排列为 \(1,2,3,\dots\). 设第 \(i\) 行第 \(j\ ...

  2. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

  3. 洛谷九月月赛II

    题解:模拟 一旦不匹配就要break #include<iostream> #include<cstdio> #include<cstring> #include& ...

  4. 洛谷P1783 海滩防御 分析+题解代码

    洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...

  5. 洛谷P4047 [JSOI2010]部落划分题解

    洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...

  6. 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)

    洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...

  7. 洛谷五月月赛【LGR-047】划水记

    虽然月赛有些爆炸,但我永远资瓷洛谷! 因为去接水,所以迟到了十几分钟,然后洛谷首页就打不开了-- 通过洛谷题库间接打开了比赛,看了看\(TA\),WTF?博弈论?再仔细读了读题,嗯,判断奇偶性,不过要 ...

  8. [洛谷P1823]音乐会的等待 题解(单调栈)

    [洛谷P1823]音乐会的等待 Description N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没 ...

  9. BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解

    +++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...

随机推荐

  1. bsp工程管理

    1. bsp工程管理的目的 模块化项目,使得项目清晰 2. 代码 拷贝原来工程 创建文件夹 bsp就是工程驱动文件 imx6ull是和芯片有关的文件 obj是生成文件的文件夹 project 工程文件 ...

  2. nginx反向代理出错:proxy_pass

    问题描述: 一台服务器代理访问另一台服务器,代码如下图所示: 重新加载nginx后不会跳到该域名,而是出现error的页面. 查看error.log日志为以下报错: 2021/03/09 23:07: ...

  3. VS Code 配置和使用

    背景 Visual Studio Code(简称VS Code)是一款由微软开发且跨平台的免费源代码编辑器[6].该软件支持语法高亮.代码自动补全(又称IntelliSense).代码重构.查看定义功 ...

  4. python检验代理ip是否可用、代理ip检验

    python检验代理ip是否可用.代理ip检验 安装相关模块: pip install requests 验证代理IP是否可用脚本: import random import telnetlib im ...

  5. Oracle-where exists()、not exists() 、in()、not in()用法以及效率差异

    0.exists() 用法: select * from T1 where exists(select 1 from T2 where T1.a=T2.a) 其中 "select 1 fro ...

  6. sed 修改文件

    总结 正确的修改进文件命令(替换文件内容):sed -i "s#machangwei#mcw#g" mcw.txt 正确的修改追加进文件命令(追加文件内容):sed -i &quo ...

  7. day08 文件属性

    day08 系统目录 今日内容 一.重要目录 1./usr 2./var 3./proc 二.文件的属性 1.文件属性的介绍 2.文件属性的详述 3.企业案例 /usr 安装第三方软件的目录: 1./ ...

  8. Hibernate 总结(转)

    JMX:Java Management Extensions.JCA: J2EE Contector ArchitectureJNDI: Java Namind and Directory Inter ...

  9. Output of C++ Program | Set 11

    Predict the output of following C++ programs. Question 1 1 #include<iostream> 2 using namespac ...

  10. OC中的结构体

    一.结构体 结构体只能在定义的时候进行初始化 给结构体属性赋值    + 强制转换: 系统并不清楚是数组还是结构体,需要在值前面加上(结构体名称)    +定义一个新的结构体,进行直接赋值    + ...