link: https://loj.ac/problem/6287

一开始差点写FFT了23333,并且FFT还能算这样的三元组的数量而且还不用要求这是一个排列。。。。

但这太大材小用了(而且很可能被卡)

记得bzoj上有道类似的,大致的操作就是单点修改和查询当前点到边界的对称子串是否是回文串。。。

这个HASH一下就好了,(但是本蒟蒻第一次写hash)

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#define ll long long
#define maxn 300005
using namespace std;
const int ba=131;
const int ha=998244353;
int ci[maxn],f[maxn];
int a[maxn],n,m;
int g[maxn]; inline int add(int x,int y){
x+=y;
if(x>=ha) return x-ha;
else return x;
} inline int queryqz(int x){
int an=0;
for(;x;x-=x&-x) an=add(an,f[x]);
return an;
} inline void updateqz(int x,int y){
for(;x<=n;x+=x&-x) f[x]=add(f[x],y);
} inline int queryhz(int x){
int an=0;
for(;x<=n;x+=x&-x) an=add(an,g[x]);
return an;
} inline void updatehz(int x,int y){
for(;x;x-=x&-x) g[x]=add(g[x],y);
} inline bool solve(int x){
int num=a[x],len=min(num,n-num+1);
int o=queryqz(num),u=queryhz(num); if(len==num){
if(n-num+1>len) u=add(u,ha-queryhz(num+len));
o=o*(ll)ci[n-num-len+1]%ha;
}
else{
o=add(o,ha-queryqz(num-len));
u=u*(ll)ci[num-len]%ha;
} updateqz(num,ci[num]);
updatehz(num,ci[n-num+1]); return u==o;
} int main(){
ci[0]=1;
for(int i=1;i<=300000;i++) ci[i]=ci[i-1]*(ll)ba%ha; scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",a+i); for(int i=1;i<=n;i++) if(!solve(i)){
puts("YES");
return 0;
} puts("NO");
return 0;
}

  

Loj #6287 诗歌的更多相关文章

  1. 「LOJ 6287」诗歌

    题面 LOJ 6287 Solution 枚举中间点\(j\),题目即求是否存在\(m\)使\(a[j]-m\)与\(a[j]+m\)分别在\(j\)两侧. 对于\(j\)左侧任意一个点\(i\),都 ...

  2. loj 诗歌

    链接 链接 思路 好久之前的考试题了吧,之前貌似抄的题解 现在理解了怕忘了,就写个题解记录一下吧,题目还是不错的 枚举中间点j \[H_{i}-H_{j}=H_{j}-H_{k}\] \[H_{k}+ ...

  3. 语音识别完成诗句的查询功能,iOS AVSpeechSynthesis语音输出结果的诗歌APP

    前言 当前的APP的查询都是使用手动输入,不仅效率低,而且查询的语句的限制比较大,不能够方便的扩展. 如果能方便的扩展查询语句,那么APP的使用就会有很大的灵活性.可以设计各种问句和语句,可以方便的和 ...

  4. [Noi2016]区间 BZOJ4653 洛谷P1712 Loj#2086

    额... 首先,看到这道题,第一想法就是二分答案+线段树... 兴高采烈的认为我一定能AC,之后发现n是500000... nlog^2=80%,亲测可过... 由于答案是求满足题意的最大长度-最小长 ...

  5. Loj #2192. 「SHOI2014」概率充电器

    Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  6. Loj #3096. 「SNOI2019」数论

    Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...

  7. Loj #3093. 「BJOI2019」光线

    Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...

  8. Loj #3089. 「BJOI2019」奥术神杖

    Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...

  9. Loj #2542. 「PKUWC2018」随机游走

    Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次 ...

随机推荐

  1. springboot(七):springboot+mybatis多数据源最简解决方案

    说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...

  2. 洛谷P1553数字反转升级版

    题目链接:https://www.luogu.org/problemnew/show/P1553

  3. leetcode 【 Best Time to Buy and Sell Stock III 】python 实现

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  4. Python基础-week01 Python安装/变量/输入/及循环语句使用

      一.Python介绍 (1).目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,You ...

  5. JVM虚拟机系列(二)虚拟机的逻辑结构

    这个节日,终于把之前看的断断续续的JVM看的差不多了,在这里做一份笔记吧. JVM支持的数据类型: JVM运行时的数据区:

  6. HDU3232 Crossing Rivers 数学期望问题

    Crossing Rivers                                                                                     ...

  7. EasyUi DataGrid 获取选中行的checkbox

    EasyUi DataGrid 获取选中行的checkbox var checked = $(":checkbox[name=ID]:checked"); console.log( ...

  8. php获取客户端mac地址

    exec('/sbin/arp -a 2>&1', $array, $return_val);dump($array);$mac = '';foreach($array as $valu ...

  9. HTML表单与文件

    <!DOCTYPE html> <html> <head lang="en"> <title></title> < ...

  10. 【bzoj2179】FFT快速傅立叶 FFT

    题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. 输出 输出一行,即x*y的结果. 样例 ...