20181031noip模拟赛T1

思路:
我们会发现不合法的位置只有两种情况
要么在前半边,要么在后半边
那么,我们将序列劈两次
使两次的长度分别为:
(n为偶数时要特判一下,因为根本不可能)
(n/2),(n/2+1)
(n/2+1),(n/2)
分别暴力贪心的匹配就好
但是,想ACACACACA这种,就会出锅
特判一下就好
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rii register int i
#define rij register int j
#define p1 19260817
#define p2 998244353
using namespace std;
int n,t;
char ls[];
int hash1()
{
long long ans=;
for(rii=;i<=n/;i++)
{
ans*=ls[i];
ans%=p1;
}
return ans;
}
int hash2()
{
long long ans=;
for(rii=;i<=n/;i++)
{
ans*=ls[i];
ans%=p2;
}
return ans;
}
int pash1()
{
long long ans=;
for(rii=(n+)/+;i<=n;i++)
{
ans*=ls[i];
ans%=p1;
}
return ans;
}
int pash2()
{
long long ans=;
for(rii=(n+)/+;i<=n;i++)
{
ans*=ls[i];
ans%=p2;
}
return ans;
}
void solve()
{
scanf("%d\n",&n);
int cnt=,wz=;
for(rii=;i<=n;i++)
{
cnt++;
ls[i]=getchar();
}
scanf("\n");
if(n%==)
{
puts("NOT POSSIBLE");
return;
}
int dp=;
for(rii=;i<=n-;i++)
{
if(ls[i]!=ls[i+])
{
dp=;
break;
}
}
if(dp==)
{
puts("NOT UNIQUE");
return;
}
int bnt=n/;
int sl=,pd=;
for(int i=;i<=n/;i++)
{
bnt++;
if(ls[i]!=ls[bnt])
{
bnt++;
pd++;
if(ls[bnt]!=ls[i])
{
pd++;
}
}
if(pd>=)
{
break;
}
}
int cs1=,cs2=;
if(pd<=)
{
sl++;
cs1=hash1();
cs2=hash2();
wz=;
}
pd=,bnt=;
int kkk=(n+)/;
for(int i=kkk+;i<=n;i++)
{
bnt++;
if(ls[bnt]!=ls[i])
{
bnt++;
pd++;
if(ls[bnt]!=ls[i])
{
pd++;
}
}
if(pd>=)
{
break;
}
}
if(pd<=)
{
sl++;
wz=;
}
if(sl==)
{
if(cs1==pash1()&&cs2==pash2())
{
sl--;
}
}
if(sl==)
{
puts("NOT UNIQUE");
}
if(sl==)
{
puts("NOT POSSIBLE");
}
if(sl==)
{
if(wz==)
{
int ltt=n/;
for(rii=;i<=ltt;i++)
{
putchar(ls[i]);
}
putchar();
}
else
{
int ltt=(n+)/;
for(rii=ltt+;i<=n;i++)
{
putchar(ls[i]);
}
putchar();
}
}
}
int main()
{
freopen("lgg.in","r",stdin);
freopen("lgg.out","w",stdout);
scanf("%d\n",&t);
for(rii=;i<=t;i++)
{
solve();
}
return ;
}
20181031noip模拟赛T1的更多相关文章
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- 20180610模拟赛T1——脱离地牢
Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...
- NOIP欢乐模拟赛 T1 解题报告
小澳的方阵 (matrix.cpp/c/pas) [题目描述] 小澳最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的小澳打算在电脑上还原这个伟大的布局. 他努力钻研,发现秦始皇布置兵马俑 ...
- [模拟赛] T1 高级打字机
Description 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小 ...
- 2019.2.25 模拟赛T1【集训队作业2018】小Z的礼物
T1: [集训队作业2018]小Z的礼物 我们发现我们要求的是覆盖所有集合里的元素的期望时间. 设\(t_{i,j}\)表示第一次覆盖第i行第j列的格子的时间,我们要求的是\(max\{ALL\}\) ...
- [NOIP2018校模拟赛]T1 阶乘
题目: 描述 有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值. 输入 共两行. 第一行一个正整数n. 第二行n个正整数a[i]. 输出 共 ...
- [NOIP2018校模拟赛]T1聚会 party
题目链接: 聚会 分析: 设每个点到1号点的距离为dist_{i},每个点的权值为x_{i},目标点到1号点的距离为dist,权值为x,那么对于每一次查询,我们讨论三种情况: ① 目标家庭在区间左边( ...
- 【2019.8.15 慈溪模拟赛 T1】插头(plugin)(二分+贪心)
二分 首先,可以发现,最后的答案显然满足可二分性,因此我们可以二分答案. 然后,我们只要贪心,就可以验证了. 贪心 不难发现,肯定会优先选择能提供更多插座的排插,且在确定充电器个数的情况下,肯定选择能 ...
- 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)
打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...
随机推荐
- 【问题:发现与解决】angularJs指令在dijit控件中的使用
由于公司主要用的JS框架是DOJO,最近又运用了angularJs.因此,不可能避免的遇到dojo控件和angular指令(directive)共用时遇到的一些问题,问题如下: <input ...
- C++ 判断进程是否存在
原文:http://blog.csdn.net/u010803748/article/details/53927977?locationNum=2&fps=1 一.判断指定程序名的进程是否存在 ...
- 在 ubuntu 上运行 php 脚本
在 ubuntu 上运行 php 脚本 一.配置运行环境 1.要在 ubuntu 上运行 php 脚本,需要安装 Apache2 和 PHP 具体步骤,请参考:Ubuntu 搭建Web服务器(MySQ ...
- Python爬虫教程-05-python爬虫实现百度翻译
使用python爬虫实现百度翻译功能 python爬虫实现百度翻译: python解释器[模拟浏览器],发送[post请求],传入待[翻译的内容]作为参数,获取[百度翻译的结果] 通过开发者工具,获取 ...
- Bitmap到底占多少内存
转至:Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存? Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟 ...
- Connection to linux server with ORACLE SQL DEVELOPER
1.Link name is random 2.username and password is database account 3.host name is ip address ifconf ...
- vue怎么不通过dom操作获取dom节点
今天写一个公众号的项目,写了一个vue的搜索组件,点击搜索框时,背景出现一个遮罩,代码结构如下: template:`<div class="searchBar-div"&g ...
- 021.2 IO流——字节输出流
内容:流的分类,文件写入(字节输出流),异常处理,获取一个文件夹下的特定文件集合 字节流的抽象基类:InputStream,OutputStream字符流的抽象基类:Reader,Writer由这四个 ...
- 关于memcpy的实现
今天去面试,面试官出了一个关于memcpy的函数原型的实现的问题,本来这个问题是很简单的,但是不知道当时怎么脑子一抽竟然写错了,真是”累觉不爱”了.感觉这份工作算是泡汤了,算了事情发生了,错过了也就错 ...
- 【转】用JS创建json数据,并且可以动态往json数据里面添加新值,也可以修改值。
原文地址:http://blog.csdn.net/panlingfan/article/details/45562893/ 函数不需要 return,因为 json 对象会被函数直接修改. var ...