# Notepad#
## 题面翻译
### 题目描述
一开始打出的内容为空。现在你要打出一个长度为 $n$ 的字符串 $s$(全为英文小写字母组成),为此每次你可以进行如下操作中的一种:
- 在已打出内容的最后添加一个字符。
- 复制已打出内容的一个连续的子串并加到内容的末尾。
问你能不能在严格小于 $n$ 次操作下打出字符串 $s$?
### 输入格式
$t$ 组数据。第一行输入正整数 $t(1\le t\le10^4)$。
每组数据第一行输入正整数 $n$,第二行输入字符串 $s$。
单个测试点内所有 $n$ 之和不超过 $2\times10^5$。
### 输出格式
输出 $t$ 行,每行输出这组数据的答案。如果可以达到要求,输出 `YES`。否则输出 `NO`。
## 题目描述
You want to type the string $ s $ , consisting of $ n $ lowercase Latin letters, using your favorite text editor Notepad#.
Notepad# supports two kinds of operations:
- append any letter to the end of the string;
- copy a continuous substring of an already typed string and paste this substring to the end of the string.
Can you type string $ s $ in strictly less than $ n $ operations?
## 输入格式
The first line contains a single integer $ t $ ( $ 1 \le t \le 10^4 $ ) — the number of testcases.
The first line of each testcase contains a single integer $ n $ ( $ 1 \le n \le 2 \cdot 10^5 $ ) — the length of the string $ s $ .
The second line contains a string $ s $ , consisting of $ n $ lowercase Latin letters.
The sum of $ n $ doesn't exceed $ 2 \cdot 10^5 $ over all testcases.
## 输出格式
For each testcase, print "YES" if you can type string $ s $ in strictly less than $ n $ operations. Otherwise, print "NO".
## 样例 #1
### 样例输入 #1
```
6
10
codeforces
8
labacaba
5
uohhh
16
isthissuffixtree
1
x
4
momo
```
### 样例输出 #1
```
NO
YES
NO
YES
NO
YES
```
## 提示
In the first testcase, you can start with typing "codef" ( $ 5 $ operations), then copy "o" ( $ 1 $ operation) from an already typed part, then finish with typing "rces" ( $ 4 $ operations). That will be $ 10 $ operations, which is not strictly less than $ n $ . There exist other ways to type "codeforces". However, no matter what you do, you can't do less than $ n $ operations.
In the second testcase, you can type "labac" ( $ 5 $ operations), then copy "aba" ( $ 1 $ operation), finishing the string in $ 6 $ operations.
//Notepad# //只需要寻找出字符串中是否存在不重叠的两个相同的子串就可以了,字串长度为2就可以了 //利用map存储 #include <bits/stdc++.h> #define int long long using namespace std; const int N=1e6+10,mod=1e9+7; string s; int n,t,a[N],f[N],res,num,ans,m; bool vis[N]; signed main() { std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>t; while(t--){ cin>>n>>s; map<string,int>p; res=0; for(int i=0;i<s.size();i++){ string tmp; tmp+=s[i]; tmp+=s[i+1]; if(p.count(tmp)==1&&p[tmp]!=i-1){ cout<<"YES"<<endl; goto nexts; } if(!p.count(tmp)) p[tmp]=i; } cout<<"NO"<<endl; nexts:; } return 0; }
标签:operations,le,string,##,Notepad,### From: https://www.cnblogs.com/o-Sakurajimamai-o/p/17551861.html