题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3916 (BZOJ3916)

  • 由题意可知 \(N\) 得为奇数,\(S\) 才存在,所以先特判 \(N\) 为偶数的情况。

  • 由题意可知 \(S\) 的长度为 \(\lfloor \dfrac {N}{2}\rfloor\), 设 \(S\) 的长度为 \(M\)。

  • 如果存在 \(S\),则 \(S\) 一定是 \(U\) 的前 \(M\) 个字符或后 \(M\) 个字符。

  • 用 substr 函数分别截取前 \(M\) 个字符和后 \(M\) 个字符,再依次匹配检查是否合法。

代码:

#include <bits/stdc++.h>
using namespace std;
int n, m, a1, a2;
string u, s1, s2; int main()
{
scanf("%d", &n);
ㅤㅤㅤㅤ if (n % 2 == 0)
{
printf("NOT POSSIBLE\n");
return 0;
}
cin >> u;
m = n / 2;
s1 = u.substr(0, m);
int j = 0;
ㅤㅤㅤㅤ for (int i = m; i < n && j < m; i++)
if (u[i] == s1[j]) j++;
ㅤㅤㅤㅤ if (j == m) a1 = 1;
s2 = u.substr(n - m, m);
j = 0;
for (int i = 0; i < n - m && j < m; i++)
if (u[i] == s2[j]) j++;
ㅤㅤㅤㅤ if (j == m) a2 = 1;
if (!a1 && !a2) printf("NOT POSSIBLE\n");
else if (a1 && a2 && s1 != s2) printf("NOT UNIQUE\n");
else if (a1) cout << s1 << endl;
ㅤㅤㅤㅤ else cout << s2 << endl;
return 0;
}

【题解】[BalticOI 2014]friends的更多相关文章

  1. P6739 [BalticOI 2014 Day1] Three Friends 题解

    目录 写在前面 Solution 何为字符串哈希(可跳过): Code 写在前面 P6739 [BalticOI 2014 Day1] Three Friends 听说这题可以用比较暴力的做法过,比如 ...

  2. LOJ2823 「BalticOI 2014 Day 1」三个朋友

    题意 给定一个字符串 S,先将字符串 S 复制一次(变成双倍快乐),得到字符串 T,然后在 T 中插入一个字符,得到字符串 U. 给出字符串 U,重新构造出字符串 S. 所有字符串只包含大写英文字母. ...

  3. hash进阶:使用字符串hash乱搞的姿势

    前言 此文主要介绍hash的各种乱搞方法,hash入门请参照我之前这篇文章 不好意思hash真的可以为所欲为 在开头先放一下题表(其实就是我题解中的hash题目qwq) 查询子串hash值 必备的入门 ...

  4. NOIP 2014 提高组 题解

    NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...

  5. The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 【部分题解】

    2014牡丹江亚洲区域赛邀请赛 B题:图论题目 题解:这里 K题:想法题 分析:两种变化.加入和交换.首先:星号是n的话最少须要的数字是n+1,那么能够首先推断数字够不够,不够的话如今最前面添数字,假 ...

  6. 【题解】LOJ2759. 「JOI 2014 Final」飞天鼠(最短路)

    [题解]LOJ2759. 「JOI 2014 Final」飞天鼠(最短路) 考虑最终答案的构成,一定是由很多飞行+一些上升+一些下降构成. 由于在任何一个点上升或者下降代价是一样的,所以: 对于上升操 ...

  7. 2014 ACM/ICPC 北京邀请赛 部分 题解

    题目链接:http://acm.bnu.edu.cn/bnuoj/problem.php?search=2014+ACM-ICPC+Beijing+Invitational+Programming+C ...

  8. HXOI 2014 PSet 4 Day 1 一模04日1 题解

    1. 最小花费(money.pas/c/cpp) 问题描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问 ...

  9. Google Code Jam 2014 Qualification 题解

    拿下 ABD, 顺利晋级, 预赛的时候C没有仔细想,推荐C题,一个非常不错的构造题目! A Magic Trick 简单的题目来取得集合的交并 1: #include <iostream> ...

随机推荐

  1. ATT&CK如何落地到安全产品

    科普:ATT&CK是什么 ATT&CK的提出是为了解决业界对黑客行为.事件的描述不一致.不直观的问题,换句话说它解决了描述黑客行为 (TTP) 的语言和词库,将描述黑客攻击的语言统一化 ...

  2. Rocket - tilelink - AtomicAutomata之二

    https://mp.weixin.qq.com/s/XDUtw0uPrVXC4CChbydF_A   分析在透传和代理两种模式下,AtomicAutomata可能出现的问题.   ​​   1. 透 ...

  3. cmd启动mysql,服务名无效

    通过cmd无法启动mysql 解决办法: 在计算机管理(或者win+R,输入services.msc)中打开服务,查看mysql服务的名称是否正确. 键入正确的名称启动mysql.

  4. Java实现 LeetCode 779 第K个语法符号(递归)

    779. 第K个语法符号 在第一行我们写上一个 0.接下来的每一行,将前一行中的0替换为01,1替换为10. 给定行数 N 和序数 K,返回第 N 行中第 K个字符.(K从1开始) 例子: 输入: N ...

  5. (Java实现) 洛谷 P1387 最大正方形

    题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=100),接下来n行,每行m ...

  6. Java实现 蓝桥杯 算法训练 递归求二项式系数

    算法训练 6-1 递归求二项式系数值 时间限制:10.0s 内存限制:256.0MB 问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 ...

  7. Java实现花朵数

    一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. 例如: 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水 ...

  8. AS中将module转成library的步骤

    转换步骤是在Android Studio 2.3版本下进行的,其他版本未测试 将要变成library的module的gradle文件的第一行 修改前:apply plugin: 'com.Androi ...

  9. Python 中class的小例子

    class Song(): def __init__(self,lyrics): self.lyrics=lyrics def sing_a_song(self): for line in self. ...

  10. watch监听事件

    Vue.js 监听属性 watch,可以通过 watch 来响应数据的变化.以下实例通过使用 watch 实现计数器: <div id="app">           ...