打卡信奥刷题(3053)用C++实现信奥题 P6739 [BalticOI 2014] Three Friends (Day1)

张开发
2026/5/1 2:11:06 15 分钟阅读
打卡信奥刷题(3053)用C++实现信奥题 P6739 [BalticOI 2014] Three Friends (Day1)
P6739 [BalticOI 2014] Three Friends (Day1)题目描述有一个字符串S SS对他进行操作将S SS复制为两份存在字符串T TT中在T TT的某一位置上插入一个字符得到字符串U UU现在给定U UU求S SS。输入格式第一行一个整数N NN代表U UU的长度。第二行N NN个字符代表字符串U UU。输出格式如果不能通过上述的步骤从S SS推到U UU输出NOT POSSIBLE。如果从U UU得到的S SS不是唯一的输出NOT UNIQUE。否则输出一个字符串S SS。输入输出样例 #1输入 #17 ABXCABC输出 #1ABC输入输出样例 #2输入 #26 ABCDEF输出 #2NOT POSSIBLE输入输出样例 #3输入 #39 ABABABABA输出 #3NOT UNIQUE说明/提示数据规模与约定本题采用捆绑测试。Subtask 135 ptsN ≤ 2001 N \le 2001N≤2001。Subtask 265 pts无特殊限制。对于100 % 100\%100%的数据2 ≤ N ≤ 2 × 10 6 1 2 \le N \le 2 \times 10^612≤N≤2×1061保证U UU中只包含大写字母。说明翻译自 BalticOI 2014 Day1 B Three Friends。C实现#includebits/stdc.husingnamespacestd;intn,m,a1,a2;string u,s1,s2;intmain(){scanf(%d,n);if(n%20){printf(NOT POSSIBLE\n);return0;}cinu;mn/2;s1u.substr(0,m);//匹配检查前M个字符intj0;for(intim;injm;i)if(u[i]s1[j])j;if(jm)a11;s2u.substr(n-m,m);//匹配检查后M个字符j0;for(inti0;in-mjm;i)if(u[i]s2[j])j;if(jm)a21;if(!a1!a2)printf(NOT POSSIBLE\n);elseif(a1a2s1!s2)printf(NOT UNIQUE\n);elseif(a1)couts1endl;elsecouts2endl;return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容

更多文章