首页 > 其他分享 >CF1766B [Notepad#]

CF1766B [Notepad#]

时间:2023-10-11 22:37:56浏览次数:46  
标签:map CF1766B s2 s1 Notepad cin mp text

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;
}

标签:map,CF1766B,s2,s1,Notepad,cin,mp,text
From: https://www.cnblogs.com/yhx0322/p/17758378.html

相关文章

  • Notepad++插件安装
    在线插件如果无法下载,一般是网路问题,毕竟连的是国外服务器。下载完成后安装失败,这时下载的文件可以在回收站找到,从回收站剪切出来放到Notepad++安装目录下的plugins文件夹下。将解压缩出来的文件夹重命名,与其内的.dll文件名称一致。手动安装插件完成。......
  • Notepad++ 下载与安装教程
    Notepad++下载与安装教程 Notepad++简介Notepad++是程序员必备的文本编辑器,Notepad++中文版小巧高效,支持27种编程语言,通吃C,C++,Java,C#,XML,HTML,PHP,JS等,Notepad++中文版编辑器可完美地取代微软的记事本。一,Notepad++下载1.因为最近官网进不去,所有进人这个网站进......
  • notepad安装json格式化工具
    Notepad++是Windows下一款非常好用的免费多语言代码编辑器,可以通过添加JSON格式化插件,更方便的协助我们将JSON数据格式化为观看更直观友好的格式插件名称:JSONViewer1.在线安装1.1打开Notepad++,选择插件>插件管理>可用>搜索关键词json即可找到JSONViewer1.2......
  • Notepad++ 不显示上次打开的文件
    不勾选下面的选项即可......
  • notepad运行python代码的步骤
    notepad运行python代码的步骤:1、用notepad++打开python文件。或者新建文件,保存为.py格式。2、在菜单栏上面有一个运行,我们点击运行->运行,或者使用快捷键F5。3、点击运行菜单后会弹出notepad++中的运行窗口,不是系统自带的cmd运行窗口。输入运行程序名的输入框填写内容为:cmd/k......
  • notePad操作记录
    1、去除重复行^(.*?)$\s+?^(?=.*^\1$)2、去除HTML标签,保留文字<[^>]+>3、替换包含特定字符的行(替换中,不选择匹配新行).*[字符].*\r\n或者^.*字符.*$4、删除S之后的所有字符用:s.*$ ......
  • Windows10下Notepad++详细安装过程
     1、下载安装包官网地址:DownloadNotepad++-free-latestversion(softonic.com)  2、执行安装包         找txt或者sql、html后缀文件,右键即可看到 代表安装成功......
  • notepad如何删除某个字符开头的行,notepad如何删除空白行(好文转发)
    notepad如何删除某个字符开头的行^#.*$   注意:#替换成你想要删除行中的字符就可 notepad如何删除空白行 转发:https://blog.csdn.net/qq_34412985/article/details/107428206原作者:qq_34412985(多谢作者提供好文)......
  • Q:如何实现notepad++列编辑模式
    列编辑:txt编辑器大家都非常熟悉,当需要修改多行的时候只能一行一行的修改。而notepad可以同时修改多行的数据。1、鼠标移动光标到要选择的列 2、按住 alt 键,从上到下选择多列,光标会变成列模式 3、输入要插入或者修改的数据。同理按delete也可以实现按列删除 ......
  • Notepad
    #Notepad###题面翻译###题目描述一开始打出的内容为空。现在你要打出一个长度为$n$的字符串$s$(全为英文小写字母组成),为此每次你可以进行如下操作中的一种:-在已打出内容的最后添加一个字符。-复制已打出内容的一个连续的子串并加到内容的末尾。问你能不能在严格小于$......