当前位置:网站首页>B. Kalindrome Array
B. Kalindrome Array
2022-08-03 21:03:00 【秦小咩】
B. Kalindrome Array
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
An array [b1,b2,…,bm][b1,b2,…,bm] is a palindrome, if bi=bm+1−ibi=bm+1−i for each ii from 11 to mm. Empty array is also a palindrome.
An array is called kalindrome, if the following condition holds:
It's possible to select some integer xx and delete some of the elements of the array equal to xx, so that the remaining array (after gluing together the remaining parts) is a palindrome.
Note that you don't have to delete all elements equal to xx, and you don't have to delete at least one element equal to xx.
For example :
- [1,2,1][1,2,1] is kalindrome because you can simply not delete a single element.
- [3,1,2,3,1][3,1,2,3,1] is kalindrome because you can choose x=3x=3 and delete both elements equal to 33, obtaining array [1,2,1][1,2,1], which is a palindrome.
- [1,2,3][1,2,3] is not kalindrome.
You are given an array [a1,a2,…,an][a1,a2,…,an]. Determine if aa is kalindrome or not.
Input
The first line contains a single integer tt (1≤t≤1041≤t≤104) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer nn (1≤n≤2⋅1051≤n≤2⋅105) — the length of the array.
The second line of each test case contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤n1≤ai≤n) — elements of the array.
It's guaranteed that the sum of nn over all test cases won't exceed 2⋅1052⋅105.
Output
For each test case, print YES if aa is kalindrome and NO otherwise. You can print each letter in any case.
Example
input
Copy
4 1 1 2 1 2 3 1 2 3 5 1 4 4 1 4
output
Copy
YES YES NO YES
Note
In the first test case, array [1][1] is already a palindrome, so it's a kalindrome as well.
In the second test case, we can choose x=2x=2, delete the second element, and obtain array [1][1], which is a palindrome.
In the third test case, it's impossible to obtain a palindrome.
In the fourth test case, you can choose x=4x=4 and delete the fifth element, obtaining [1,4,4,1][1,4,4,1]. You also can choose x=1x=1, delete the first and the fourth elements, and obtain [4,4,4][4,4,4].
双指针,左右相等继续推进,一旦不相等,就意味着必须删掉一个,而且答案就在这两者之间,所以枚举两者删除情况即可。题目忽悠人,说删几个x都行,其实必须都删才最好,因为如果两个x能左右对称那么删与不删一个样,一旦不对称还不如都删了。
#include <iostream>
# include<algorithm>
# include<cstring>
using namespace std;
typedef long long int ll;
int book[200000+10];
int b[200000+10];
int a[200000+10];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
memset(book,0,sizeof(book));
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
if(n==1||n==2)
{
cout<<"YES"<<'\n';
continue;
}
int l=1,r=n;
int ans=0;
while(l<r)
{
if(a[l]==a[r])
{
l++;
r--;
}
else
{
int len=0;
for(int i=1;i<=n;i++)
{
if(a[i]!=a[l])
{
len++;
b[len]=a[i];
}
}
int flag=0;
for(int i=1;i<=len/2;i++)
{
if(b[i]!=b[len-i+1])
{
flag=1;
}
}
if(!flag)
{
ans=1;
break;
}
len=0;
for(int i=1;i<=n;i++)
{
if(a[i]!=a[r])
{
len++;
b[len]=a[i];
}
}
flag=0;
for(int i=1;i<=len/2;i++)
{
if(b[i]!=b[len-i+1])
{
flag=1;
}
}
if(!flag)
{
ans=1;
break;
}
break;
}
}
if(ans||l>=r)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
return 0;
}
边栏推荐
- 通关剑指 Offer——剑指 Offer II 009. 乘积小于 K 的子数组
- Several difficult problems in DDD
- 简单又有效的基本折线图制作方法
- ES6 deconstruction assignment - array object deconstruction and deconstruction
- LitJson报错记录
- PyCharm function automatically add comments without parameters
- 函数,递归以及dom简单操作
- if _name_ == “__main__“:NameError: name ‘_name_‘ is not defined
- svg胶囊药样式切换按钮
- Power button - 203 - remove the list elements linked list
猜你喜欢
华为设备配置VRRP与BFD联动实现快速切换
TweenMax.js向日葵表情变化
2022年1~7月语音合成(TTS)和语音识别(ASR)论文月报
15年软件架构师经验总结:在ML领域,初学者踩过的五个坑
服务器安装redis
Several difficult problems in DDD
3种圆形按钮悬浮和点击事件
解决npm -v查看npm版本出现npm WARN config global `--global`, `--local` are deprecated. Use `--location报错
肝完 Alibaba 这份面试通关宝典,我成功拿下今年第 15 个 Offer
火了十几年的零信任,为啥还不能落地
随机推荐
Why BI software can't handle correlation analysis
XSS测试
迪赛智慧数——柱状图(多色柱状图):2021年我国城市住户存款排名
开源一夏 |如何优化线上服务器
abs()、fabs() 和 labs() 的区别
StoneDB 助力 2022 开放原子全球开源峰会
4. 模块化编程
解决This application failed to start because no Qt platform plugin could be initialized的办法
Leetcode 125. Verify palindrome string
华为设备配置VRRP与BFD联动实现快速切换
ES6解构赋值--数组解构及对象解构
PyCharm函数自动添加注释无参数问题
15 years experience in software architect summary: in the field of ML, tread beginners, five hole
glusterfs build and use
idea2021.1.3版本如何启动多个客户端程序
leetcode 剑指 Offer 15. 二进制中1的个数
XSS线上靶场---haozi
LeetCode_位数统计_中等_400.第 N 位数字
Likou 59 - Spiral Matrix II - Boundary Judgment
Interesting opencv - record image binarization and similarity