U328368 【数据加强版】[SDOI2015] 双旋转字符串

题目背景

**2023.8.16 18:55 目前数据有锅,可能出现非正常WA** **2023.8.16 19:26 数据已修复(也许)** 本题为 P3318 的数据加强版,修复了原版所有数据 `n=m` 的 bug

题目描述

题目同 [P3318 [SDOI2015] 双旋转字符串](https://www.luogu.com.cn/problem/P3318)

输入格式

无

输出格式

无

说明/提示

本数据(100%)范围满足原题的: $ 2 \le N \times TotalS + M \times TotalT \le 4 \times 10^6$ 此外,额外满足: $ 200 \le s,t \le 300$ $ 5000 \le n,m \le 6000$ 本数据以以下数据生成器生成,在没有本地库的情况下您无法使用本生成器(咱把下载链接放下面了,可以修改 `include` 的符号为 `""` 后并把代码库放在程序目录下使用),但是您可以查看本题的数据生成逻辑 数据生成使用了 @hyj0824 的 STD 程序,侵权请联系删除 另外如果数据出锅请反馈,咱会非常感谢的(づ ̄3 ̄)づ╭❤~ ```cpp #include #include using namespace std; using pii = pair; bool CASE1 = false; bool CASE2 = false; bool CASE3 = false; bool CASE4 = false; namespace Make{ Rander rd; pii ST = {200,300}; pii NM = {5000,6000}; const int MAXVAL = 4e6; const int MAXST = 606; string str1[MAXST],str2[MAXST]; inline string Cut(const string& str,int l,int r){ string ret; for(int i = l;i = MAXVAL){ s = rd(ST.first,ST.second),t = rd(ST.first,ST.second); n = rd(NM.first,NM.second),m = rd(NM.first,NM.second); } if(CASE1){ if(n < m)swap(n,m); } if(CASE2){ int mn = min(n,m); n = mn,m = mn; } int len = n + m,st = min(s,t); for(int i = 1;i