CSDN同步

原题链接

CF 127个测试点,好评

简要题意:

多组数据,问数组中是否有长度 \(\geq 3\) 的回文子序列。

我们需要找到本质。

题目不让我们求这个长度,只让我们判断,这是为什么呢?

如果答案是 YES,那么必然存在一个长度为 \(3\) 的回文子序列。否则为 NO.

你想,如果原数组的最长回文序列是奇数的话,只要每次在两边同时删去一个,就可以得到长度为 \(3\) 的回文子序列。

如果是偶数,只要每次在两边同时删去一个,再在最中间两个任意删去一个,也可以得到长度为 \(3\) 的回文子序列。

反之如果没有,则就没有了。

比方说:

10
1 2 3 4 2 1 4 2 4 3

你发现这个数组的最长回文子序列为:

3 4 2 2 4 3

是偶数,那么其中必然存在一个长度为 \(3\) 的是:

4 2 4

(当然不止一种)

所以,题意改为:

判断一个数组中是否有长度为 \(3\) 的回文子序列。

???这还用判断吗???

长度为 \(3\),中间数没有什么限制,旁边两个数相等即可。

也就是说,需要 找到两个相等的数,使得它们不相邻(即中间还放得下一个数,构成回文子序列)

???这还用判断吗???

显然,一波哈希解决问题。正好 \(a_i \leq n\),这不是天赐良机?

时间复杂度: \(O(T \times n)\).

空间复杂度: \(O(n)\).

实际得分: \(100pts\).

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std; inline int read(){char ch=getchar();int f=1;while(ch<'0' || ch>'9') {if(ch=='-') f=-f; ch=getchar();}
int x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;} int a[5001],n;
int T; int main(){
T=read(); while(T--) {
n=read(); bool f=0;
memset(a,0,sizeof(a));
for(int i=1,t;i<=n;i++) {
t=read();
if(a[t] && i-a[t]>1) f=1;
if(!a[t]) a[t]=i;
} if(f) puts("YES");
else puts("NO");
}
return 0;
}

CF1324B Yet Another Palindrome Problem 题解的更多相关文章

  1. POJ2826:An Easy Problem?!——题解(配特殊情况图)

    http://poj.org/problem?id=2826 题目大意:给两条线,让它接竖直下的雨,问其能装多少横截面积的雨. ———————————————————————————— 水题,看题目即 ...

  2. HDU 1016 Prime Ring Problem 题解

    Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ... ...

  3. POJ 3280 Cheapest Palindrome DP题解

    看到Palindrome的题目.首先想到的应该是中心问题,然后从中心出发,思考怎样解决. DP问题通常是从更加小的问题转化到更加大的问题.然后是从地往上 bottom up地计算答案的. 能得出状态转 ...

  4. [CF-GYM]Abu Tahun Mod problem题解

    前言 这道题比较简单,但我还是想了好一会 题意简述 Abu Tahun很喜欢回文. 一个数组若是回文的,那么它从前往后读和从后往前读都是一样的,比如数组\(\left\{1\right\},\left ...

  5. B - Yet Another Palindrome Problem的简单方法

    You are given an array aa consisting of nn integers. Your task is to determine if aa has some subseq ...

  6. HDU 4143 A Simple Problem 题解

    题目 For a given positive integer n, please find the saallest positive integer x that we can find an i ...

  7. UVA101 The Blocks Problem 题解

    题目链接:https://www.luogu.org/problemnew/show/UVA101 这题码量稍有点大... 分析: 这道题模拟即可.因为考虑到所有的操作vector可最快捷的实现,所以 ...

  8. [NOIP模拟测试9]题(Problem) 题解 (组合数全家桶+dp)

    达哥送分给我我都不要,感觉自己挺牛批. $type=0:$ 跟visit那题类似,枚举横向移动的步数直接推公式: $ans=\sum C_n^i \times C_i^{\frac{i}{2}} \t ...

  9. ZOJ 4082 Little Sub and his Geometry Problem题解

    题意 f(u,v):x小于等于u且y小于等于v的点才对f有贡献,每个这样的点贡献(u-x)+() 思路 =f(u_2,v_2)" class="mathcode" src ...

随机推荐

  1. 从游戏到汽车 “明星IP”的发财轨迹

    "明星IP"的发财轨迹" title="从游戏到汽车 "明星IP"的发财轨迹"> 移动互联网时代的开启,不仅彻底重构了大众生 ...

  2. 使用C#开发pdf阅读器初探(基于WPF,没有使用开源库)

    前言 pdf是最流行的版式格式文件标准,已成为国际标准.pdf相关的开源软件非常多,也基本能满足日常需要了.相关商业软件更是林林总总,几乎应有尽有!似乎没必要自己再独立自主开发!但,本人基于以下考虑, ...

  3. USB小白学习之路(7) FPGA Communication with PC by CY7C68013,TD_init()解析

    注:这个TD_Init()只对EP6进行了配置,将其配置成为Bluk_In端口,而没有对EP2进行配置.这篇文章直接把寄存器的图片贴上来了,看起来比较杂.感兴趣的可以看下一篇文章,是转自CSDN,对E ...

  4. SpringBoot开始多线程

    增加配置类 package com.springbootdemo.demo.config; import org.springframework.context.annotation.Bean; im ...

  5. 手摸手教你在vue-cli里面使用vuex,以及vuex简介

    写在前面: 这篇文章是在vue-cli里面使用vuex的一个极简demo,附带一些vuex的简单介绍.有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家. 本文首发于我的个人 ...

  6. tab 切换下划线跟随实现

    HTML 结构如下: <ul> <li class="active">不可思议的CSS</li> <li>导航栏</li> ...

  7. python如何在图片上添加文字(中文和英文)

    Python在图片上添加文字的两种方法:OpenCV和PIL 一.OpenCV方法 1.安装cv2 pip install opencv-python 2.利用putText方法来实现在图片的指定位置 ...

  8. 【Java面试题】关于String,最近被问到了这2道面试题

    1. 前言 最近面试了几家公司,体验了一下电话面试和今年刚火起来的视频面试, 虽然之前就有一些公司会先通过电话面试的形式先评估下候选人的能力水平,但好像不多,至少我以前的面试形式100%都是现场面试. ...

  9. Linux 宝典《最新版》

    Linux 概述 什么是Linux?Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的Unix工具软 ...

  10. 01-if条件语句之数字比较

    if条件语句之数字比较 #!/bin/bash # 使用expr命令,比较结果正确,输入1,错误输入0 expr_mode(){ if [ $(expr $1 \<\= $2) -eq 1 ]; ...