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 ...
随机推荐
- 即构推出低延迟直播产品L3,可将直播延迟降到1s
近日,全球云通讯服务提供商ZEGO即构科技推出低延迟直播产品Low-Latency Live,简称L3.这款产品对传统CDN直播中"延迟较大.弱网抗性差.观众端内容不同步"等问题进 ...
- Linux 命令:lsof
参考文档:lsof命令详解 lsof,列出系统中所有打开的文件. 各列字段意义如下: COMMAND: 进程的名称 PID: 进程标识符 USER: 进程所有者 FD: 文件描述符,应用程序通过文件描 ...
- 关于Tensorflow!目标检测预训练模型的迁移学习
前言 关于TF的目标检测迁移学习,我一开始是想通过Tensorflow提供的API,用JS来实现的.但是官方不但没有案例,网上也没有踩坑的博客,加之我又着急要弄水印检测. 于是就在网上看了很多人用 ...
- BTC中的数据结构
BTC中的数据结构 普通指针 普通指针存储的是某个结构体在内存中的地址(假如P是指向一结构体的指针,那么P里面存放的就是该结构体在内存中的起始位置) Hash pointer(哈希指针) 对于如下的节 ...
- Win11 开启 telnet
'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件. 首先我们打开底部"开始菜单",如图所示.接着打开其中的"设置". 然后进入左边的&quo ...
- DC-SDK 开发文档
https://resource.dvgis.cn/dc-docs/v2.x/zh/introduction/#%E5%BA%94%E7%94%A8%E9%85%8D%E7%BD%AE
- 解决git出现fatal: detected dubious ownership in repository at XXXXX的错误
在window环境下,使用git命令时报错fatal: detected dubious ownership in repository at XXXXXX,图片如下 解决方法如下 添加一行代码 gi ...
- 《流畅的python》— 列表推导与生成器表达式
列表推导是构建列表(list)的快捷方式,而生成器表达式则可以用来创建其他任何类型的序列.如果你的代码里并不经常使用它们,那么很可能你错过了许多写出可读性更好且更高效的代码的机会. 很多Python ...
- 《Kali渗透基础》03. 被动信息收集
@ 目录 1:被动信息收集 1.1:收集内容 1.2:信息用途 2:域名信息收集 2.1:nslookup 2.1.1:命令参数 2.1.2:示例 - 命令行 2.1.3:示例 - 交互式 2.2:d ...
- 作为用户我该如何调用API 接口获取商品数据
作为用户,如果你想要获取商品数据,可以通过调用API接口来实现.下面是一些步骤和注意事项,帮助你成功获取商品数据. 了解开放平台:首先,你需要了解开放平台,注册一个开发者账号,并创建一个应用.在创建应 ...