当前位置: 首页 > news >正文

P2757 等差子序列 Sol

How did forever fade so soon?
所谓的永远怎会如此仓促逝去

题目链接

挺有意思的题目。

显然的,只需要找出 \(len = 3\) 的等差序列是否存在就好了。

对于等差序列,我们可以发现第二个数字非常有意思,令其为 \(a_i\),则其左边的数字为 \(a_i - k\),右边的数字为 \(a_i + k\)

那么,问题也就变成了对于每一个 \(a_i\) ,是否有数字 \(k\) ,满足其左边存在 \(a_i - k\),右边存在 \(a_i + k\)

如果直接暴力的做是 \(O(n^2)\) 的,考虑优化。

由于题目已经保证了 \(a\) 是排列,因此,从左到右遍历,如果 \(a_i - k\) 存在过并且 \(a_i+k\) 还没有出现,那么就认为找到了答案。

但是这样子正着做并不容易,因此尝试正难则反。如果没能找到答案,那么就是对于任意的 \(a_i - k\) ,满足 \(a_i+k\) 都出现了。然后问题变成了串串题。可以使用字符串哈希+线段树维护。具体可以看代码。

Code

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define ull unsigned long long
#define fi first
#define se second
#define IOS ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define File(s) freopen(s".in","r",stdin);freopen(s".out","w",stdout)
const int N = 5e5 + 10;
const ull base = 31;
int a[N];
ull pw[N];
int n;
struct dat{int len;ull val;dat operator + (const dat oth){dat re;re.len = len + oth.len;re.val = val * pw[oth.len] + oth.val;return re;}
};
struct hash1{dat tre[N << 2];void pushup(int p){tre[p] = tre[p*2] + tre[p*2+1];return ;}void build(int pl,int pr,int p){if(pl == pr){tre[p].len = 1;tre[p].val = 0;return ;}int mid = pl + pr >> 1;build(pl,mid,p*2);build(mid+1,pr,p*2+1);pushup(p);}void update(int x,int pl,int pr,int p){if(pl == pr){tre[p].val = 1;return ;}int mid = pl + pr >> 1;if(x <= mid) update(x,pl,mid,p*2);else update(x,mid+1,pr,p*2+1);pushup(p);}dat query(int L,int R,int pl,int pr,int p){if(L <= pl && pr <= R) return tre[p];int mid = pl + pr >> 1;dat re;re.val = 0;re.len = 0;if(L <= mid) re = re + query(L,R,pl,mid,p*2);if(R > mid) re = re + query(L,R,mid+1,pr,p*2+1);return re;}
}hsh1;
struct hash2{dat tre[N << 2];void pushup(int p){tre[p] = tre[p*2+1] + tre[p*2];return ;}void build(int pl,int pr,int p){if(pl == pr){tre[p].len = 1;tre[p].val = 0;return ;}int mid = pl + pr >> 1;build(pl,mid,p*2);build(mid+1,pr,p*2+1);pushup(p);}void update(int x,int pl,int pr,int p){if(pl == pr){tre[p].val = 1;return ;}int mid = pl + pr >> 1;if(x <= mid) update(x,pl,mid,p*2);else update(x,mid+1,pr,p*2+1);pushup(p);}dat query(int L,int R,int pl,int pr,int p){if(L <= pl && pr <= R) return tre[p];int mid = pl + pr >> 1;dat re;re.val = 0;re.len = 0;if(L <= mid) re = query(L,R,pl,mid,p*2) + re;if(R > mid) re = query(L,R,mid+1,pr,p*2+1) + re;return re;}
}hsh2;
void solve(){cin >> n;hsh1.build(1,n,1);hsh2.build(1,n,1);for(int i=1;i<=n;i++)cin >> a[i];for(int i=1;i<=n;i++){hsh1.update(a[i],1,n,1);hsh2.update(a[i],1,n,1);int len = min(a[i]-1,n-a[i]);ull ans1 = hsh1.query(a[i]-len,a[i]+len,1,n,1).val;ull ans2 = hsh2.query(a[i]-len,a[i]+len,1,n,1).val;if(ans1 != ans2){cout << "Y\n";return ;}}cout << "N\n";return ;
}
int main()
{IOS;pw[0] = 1;for(int i=1;i<N;i++)pw[i] = pw[i-1] * base;int T;cin >> T;while(T -- ) solve();return 0;
}
http://www.jsqmd.com/news/394200/

相关文章:

  • 晶抗生物2026年市场评测:用户选择背后的产品逻辑,小鼠的elisa试剂盒/酶联免疫试剂盒,晶抗生物公司推荐排行 - 品牌推荐师
  • 题解:洛谷 P7910 [CSP-J 2021] 插入排序
  • 基于完整集成经验模态分解(CEEMDAN)和近似熵(ApEn)CEENDAN-ApEn信号去噪附Matlab代码
  • 微信小程序Python知茶叶知识科普商城考试错题
  • 基于线性判别分析和三比值法的变压器故障识别附Matlab代码
  • 三菱FX5U+MCGS(昆仑通态)程序 1、完整的上下料接驳台项目分享; 2、三菱FX5U全S...
  • 揭秘V8引擎的类型混淆漏洞:安全开发的警示与启示
  • 电网“搭线“指南:用VSG预同步玩转三电平逆变器
  • 奥数-数论 - ace-
  • 告别 DNS 污染与封锁:手把手教你免费搭建独享 Cloudflare DoH 服务器,全球都可访问!
  • 题解:洛谷 P2671 [NOIP 2015 普及组] 求和
  • YOLO26涨点改进 | 全网独家创新,注意力改进篇| SCI一区Top | 引入AFCA自适应细粒度通道注意力,联合建模全局与局部通道依赖关系,适合目标检测、图像去雾、关键点检测、图像分类、图像分割
  • 【一文读懂】RAG的重要组成-向量数据库
  • 告别 DNS 污染与封锁:手把手教你免费搭建独享 Cloudflare DoH 服务器,全球都可访问!使用Cloudflare Zero Trust功能。
  • 实测对比后!千笔,口碑爆棚的降AIGC工具
  • RAG系统优化指南:Chunk分块策略详解,从入门到精通,收藏这一篇就够了!!
  • 题解:洛谷 P7072 [CSP-J 2020] 直播获奖
  • 2026最新!千笔ai写作,MBA论文写作利器
  • 奥数-代数 - ace-
  • 【STFT-CNN-BiGRU的故障诊断】基于短时傅里叶变换(STFT)结合卷积神经网络(CNN)与双向门控循环单元BiGRU的故障诊断研究附Matlab代码
  • 2026年35岁程序员的5条出路:AI赛道疯狂抢人,年薪百万不是梦
  • 【无人机部署】基于k - means、网格、随机算法改变UAV的数量来观察不同放置策略对总链路比特率的影响附matlab代码
  • 【图像加密】基于维纳滤波器和运动模糊的点扩散函数的图像加密算法研究附matlab代码
  • 【AI大模型】带你解析9种提速又提效的Transformer优化方案!
  • 一文总结!2026年大模型Agent RL训练多轮planning技术,收藏这篇就够了!
  • COMSOL激光超声仿真:激光超声-3维lamb波的数值模拟 版本为6.1,低于此版本打不开此模型
  • 实测对比后!千笔,普遍认可的降AIGC工具
  • 看完就会:自考必备的AI论文软件 —— 千笔·专业论文写作工具
  • 黑河工控产品口碑揭晓:2026年口碑佳的厂商有哪些,施耐德电气/工控产品/电气自动化/中低压电气,工控产品公司口碑推荐 - 品牌推荐师
  • 污水处理软件参考:从通讯到材料准备