CF1766B [Notepad#]
Problem
题目简述
给你一个整数 \(n\) 和字符串 \(s\),问:能不能在小于 \(n\) 次操作的情况下,输出字符串 \(s\)。
有两次操作可供使用:
- 在已打出内容的最后添加一个字符。
- 复制已打出内容的一个连续的子串并加到内容的末尾。
思路
用到的容器:\(\text{map}\)。
用 \(\text{map}\) 来记录每个子串出现的次数,然后求出字符串中长度为 \(2\) 的相同字串个数。
附:\(\text{map}\) 的简单介绍:
map<key的数据类型, value的数据类型>
它是 C++ 里的 STL 容器,底层用红黑树实现,如果需要 \(\text{map}\) 需要 include <map>。
取 \(\text{map}\) 里面元素的方法:mp[key]。
本题里面 \(\text{map}\) 的函数介绍:
mp.find()查找元素(没找到返回mp.end())mp.end()返回的是 \(\text{map}\) 最后一个元素地址的下一个地址,一定注意不是最后一个元素!
代码
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
int t, n;
bool f;
string s1, s2;
map<string, int> mp;
int main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); // 读入流优化
cin >> t;
while (t--) {
mp.clear(); // 注意多组测试数据的情况下,一定看看哪些变量需要清空
f = false;
cin >> n >> s1;
for (int i = 0; i < n; i++) {
s2 = "";
s2 = s1[i - 1];
s2 += s1[i];
if (!mp[s2]) { mp[s2] = i; continue; }
if(mp[s2] != i - 1 && mp.find(s2) != mp.end()) { // 找到字符
cout << "YES" << endl;
f = true;
break;
}
}
if (!f) cout << "NO" << endl;
}
return 0;
}
CF1766B [Notepad#]的更多相关文章
- notepad++设置默认打开txt文件失效的解决方法
1.系统环境 win10企业版,64位系统 2.初步设置 设置txt默认为notepad++打开,菜单:设置->首选项->文件关联 选择对应的文件扩展,点击"关闭"按钮 ...
- NotePad++中JSLint的使用
1.第一步下载Notepad++ 2.安装JSLint插件 3.运行JSlint 4.前提是你设置了当前语言或者本身文件就是js 5.JSLint的作用主要就是检查你的JS的规则正确性(至少是绝大部分 ...
- Notepad++ 实用技巧
Notepad++是一款开源的文本编辑器,功能强大.很适合用于编辑.注释代码.它支持绝大部分主流的编程语言. 本文主要列举了本人在实际使用中遇到的一些技巧. 快捷键 自定义快捷键 首先,需要知道的是: ...
- 我喜欢的Notepad++插件
Notepad++插件 HEX-Editor 文本转16进制,查看编辑. NppExport 导出已着色代码为其他格式的文件. 将彩色代码,导出为word文档(RFT)或网页(HTML)文件,或者将彩 ...
- Notepad++源码编译及其分析
Notepad++是一个小巧精悍的编辑器,其使用方法我就不多说了,由于notepad++是使用c++封装的windows句柄以及api来实现的,因此对于其源码的研究有助于学习如何封装自己简单的库(当然 ...
- Reverse Core 第二部分 - 14&15章 - 运行时压缩&调试UPX压缩的notepad
@date: 2016/11/29 @author: dlive 0x00 前言 周六周日两天在打HCTF2016线上赛,没时间看书,打完比赛接着看~~ 0x01 运行时压缩 对比upx压缩前后的no ...
- Notepad++ 使用nppexec插件配置简易开发环境
notepad++ 采用nppexec插件来配置简易开发环境,而不需要笨重的IDE以及麻烦.重复的命令行.控制台输入: 以下为本人最近用到的脚本配置: //编程语言脚本中$(NAME_PART).x ...
- notepad++快捷键
notepad++现在是我最常用的文本编辑工具,其中使用的列模式编辑,也是很好使用的. 基本的快捷键: Ctrl-C,Ctrl-X,Ctrl-V,Ctrl-Y,Ctrl-A,Ctrl-F,Ctrl-S ...
- 设置NotePad++设置"不打开上次关闭的文件"
notepad++是一个很好的记事本工具,但是默认会记录上次打开时未关闭的文件,但是实际上用起来并不方便, 可以按照下面的方式去除,notepad++版本:v6.6.2,os:win7 64位 按照以 ...
- 给notepad++添加右键菜单
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\Shell\NotePad++] [HKEY_CLASSES_ROOT\*\Shel ...
随机推荐
- 【Mybatis】学习
Mybatis 学习 环境搭建 pom.xml <!--log4j--> <dependency> <groupId>org.slf4j</groupId&g ...
- Set_HashSet_TreeSet_小记
Set接口:Set集合继承自Collection集合 Set:底层数据结构是一个哈希表,能保证元素是唯一的,元素不重复!它通过它的子实现了HashSet集合去实例化,HashSet集合底层是HashM ...
- python 将中文数字转换成阿拉伯数字
日常遇到的中文数字主要有两种情况: 1."二零零一"这种类型,只包含[0-9]对应的十个中文字,需要转换成数字:2001.这种情况的转换十分简单. 2. "三百二十一&q ...
- Blazor前后端框架Known-V1.2.7
V1.2.7 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. Gitee: https://gitee.com/known/Known Gith ...
- KVM 使用 Centos CLoud Image 安装虚拟机
1 下载镜像 # 资源地址:https://cloud.centos.org/centos/7/images/ wget https://cloud.centos.org/centos/7/image ...
- Libvirtd networks -- 为libvirtd 中虚拟机指定ip遇到的问题
backgroup 为libvirtd 中虚拟机指定ip,操作如下: virsh --connect qemu:///system dumpxml vm01 | grep "mac addr ...
- Combobox后台绑定
本文主要介绍WPF中Combobox的后台绑定,我在这里主要讲解数据驱动 1.对于前台绑定,我们首先写出想要绑定的对象 新建一个Models文件夹,将Student类写入 public class S ...
- python 运行环境变为 pytest in (for) xxx.py原因
因为本人的自定义函数名称开头为test,在.py文件内我用了unittest框架,所以环境随着变化了. 修改回去很简单,只要不使用test开头或者换个文件夹.
- 为什么创建 Redis 集群时会自动错开主从节点?
哈喽大家好,我是咸鱼 在<一台服务器上部署 Redis 伪集群>这篇文章中,咸鱼在创建 Redis 集群时并没有明确指定哪个 Redis 实例将担任 master,哪个将担任 slave ...
- RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试
前言 在之前的博文中已经搭建好了一个比较完善的ubuntu宿主机,都很完善了但是发现没有Qt交叉编译开发环境,所以还需要搭建一套Qt交叉编译开发环境. 补充说明 本篇是基于<RK35 ...