洛谷八月月赛 II T2 题解
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\) 且字符串是
01或10。
否则可以构造出一种方案。构造方案如下:
- 如果字符串形如
000...1或者111...0的话,则先在第一个字符后面插入一个与第一个字符不同的字符(如果第一个字符是1则在后面插入0,反过来则插入1),然后如果长度不够的话就在后面不停地插入最后一个字符相同的字符直到长度达到 \(m\) 为止。 - 否则在原字符串最后一个字符之前插入 \(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 题解的更多相关文章
- 洛谷八月月赛 II T1 题解
Content 在大小为 \(n\) 的数字三角形中,第 \(i\) 行包含有 \(i\) 个数字,数字从上到下,从左到右依次排列为 \(1,2,3,\dots\). 设第 \(i\) 行第 \(j\ ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
- 洛谷九月月赛II
题解:模拟 一旦不匹配就要break #include<iostream> #include<cstdio> #include<cstring> #include& ...
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- 洛谷P4047 [JSOI2010]部落划分题解
洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...
- 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)
洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...
- 洛谷五月月赛【LGR-047】划水记
虽然月赛有些爆炸,但我永远资瓷洛谷! 因为去接水,所以迟到了十几分钟,然后洛谷首页就打不开了-- 通过洛谷题库间接打开了比赛,看了看\(TA\),WTF?博弈论?再仔细读了读题,嗯,判断奇偶性,不过要 ...
- [洛谷P1823]音乐会的等待 题解(单调栈)
[洛谷P1823]音乐会的等待 Description N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没 ...
- BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...
随机推荐
- 未能加载文件或程序集“Microsoft.CodeDom.Providers.DotNetCompilerPlatform
"/"应用程序中的服务器错误. 未能加载文件或程序集"Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Versio ...
- Linux下Zabbix5.0 LTS + Grafana8.2.2图形可视化
Grafana是一款开源的可视化软件,可以搭配数据源实现一个数据的展示和分析:Grafana功能强大,有着丰富的插件,但Grafana默认没有zabbix作为数据源,需要手动给zabbix安装一个插件 ...
- C#使用Thrift作为RPC框架实战(四)之TSocket
前言 在前几个小节中我们讲了Thrift框架的基本概念以及重要的名称空间,接下来的几个小节,我们将站在实战的角度来深入讲解一些Thrift的重要类型.本小节我先要讲一下Thrift框架支持TCP通信的 ...
- 【2020-8-21】【数字游戏】【启发式搜索IDA*】
有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置.下面是一个例子: ...
- Codeforces 679E - Bear and Bad Powers of 42(线段树+势能分析)
Codeforces 题目传送门 & 洛谷题目传送门 这个 \(42\) 的条件非常奇怪,不过注意到本题 \(a_i\) 范围的最大值为 \(10^{14}\),而在值域范围内 \(42\) ...
- sar 系统活动情况报告
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包括:文件的读写情况.系统调用的使用 ...
- Linux服务器I/O性能分析-3
一.通过脚本分析IO的读/写数量.最大延迟.延迟的分布情况.块大小及数量 #!/bin/sh # # File Name : count_io.sh # Time : 2020-07-29-11:24 ...
- C语言中内存对齐与结构体
结构体 结构体是一种新的数据类型,对C语言的数据类型进行了极大的扩充. struct STU{ int age; char name[15]; }; struct STU a; //结构体实例 str ...
- Vulnstack内网靶场5
实验环境搭建 漏洞详情 (qiyuanxuetang.net) "此次靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集.Web攻防.代码审计.漏洞利用. ...
- 【NetCore】RabbitMQ 封装
RabbitMQ 封装 代码 https://gitee.com/wosperry/wosperry-rabbit-mqtest/tree/master 参考Abp事件总线的用法,对拷贝的Demo进行 ...