Notepad

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

 

posted @ 2023-07-13 19:12  o-Sakurajimamai-o  阅读(45)  评论(0)    收藏  举报
-- --