当前位置:网站首页>ST表+二分
ST表+二分
2022-06-24 19:28:00 【翁炜强】
题目:https://codeforces.ml/contest/1549/problem/D
ST表:
1.不支持在线修改 预处理事件复杂度0(nlogn),查询事件o(1)
2.例如求某一段最大值 st[i][j] 表示从i到i+2^j
那么它的最值则是由前一半和后一半决定
前一半:为i+2^(j-1),后一半则为(i+2^(j-1)+1)+2^(j-1)
那么st[i][j]=max(st[i][j-1],st[i][i+2^(j-1)+1][j-1])
for(int j=1;(1<<j)<=n;j++)
{
for(int i=1;i+(1<<j)<=n+1;i++)
{
st[i][j]=max[st[i][j-1],st[i+(1<<(j-1))][j-1]);
}
}题目分析:
大意:求一段区间内最长的子序列,其中这段序列的各个值同余m,m>=2
分析:
同余性质:
如果 x ≡ y ( m o d p )
那么( x − y ) %p==0
因此构造一个差分数组,然后满足区间的差分数组不互质就行
AC代码:
#define _CRT_SECURE_NO_WARNINGS
#include<vector>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll a[212100];
ll st[212100][30];
ll lg2[212100];//代表k的范围
ll n;
//验证是否互质
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll query(ll l, ll r) { return gcd(st[l][lg2[r - l + 1]], st[r - (1 << lg2[r - l + 1]) + 1][lg2[r - l + 1]]); }
ll bsearch(ll l, ll r, ll p)
{
ll mid;
ll k = 1;
while (l < r)//找出最优的区间 符合互质的要求
{
mid = l + r + 1 >> 1;
if (abs(query(p, mid)) < 2)//注意abs放的位置
{
r = mid - 1;//尽量使得区间小一点
}
else
{
l = mid;
}
}
if (abs(query(p, l)) < 2) { return 1; }
return l;
}
int main()
{
int T;
cin >> T;
lg2[0] = -1;
for (int i = 2; i <= 210000; i++) { lg2[i] = lg2[i>>1] + 1; } //后一个k值总是比前面大一
while (T--)
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
//初始化剩余部分
for (int i = n + 1; i <= 2 * n && i <= 200000; i++) { st[i][0] = 0; }
for (int i = 1; i <= n; i++)
{
st[i][0] = a[i] - a[i - 1];//构建差分数组
}
for (int i = 1; (1 << i) <= n; i++)//i是状态
{
for (int j = 1; j + (1 << i) - 1 <= n; j++)//j是位置
{
st[j][i] = gcd(st[j][i - 1], st[j + (1 << (i - 1))][i - 1]);
}
}
ll p = 1;
for (ll i = 1; i <= n; i++)
{
ll u = bsearch(i + 1, n, i + 1);//第三个i+1保存此时的位置
if (u == 1)continue;//互质继续延长
p = max(p, u - i + 1);
}
cout << p << endl;
}
}
边栏推荐
- Kernel Debugging Tricks
- TCP specifies the source port
- EditText controls the soft keyboard to search
- OSI and tcp/ip model
- [product design and R & D collaboration tool] Shanghai daoning provides you with blue lake introduction, download, trial and tutorial
- Functional analysis of ebpf sockops
- 基于ASP.NET开发的固定资产管理系统源码 企业固定资产管理系统源码
- 为什么生命科学企业都在陆续上云?
- Memcached comprehensive analysis – 5 Memcached applications and compatible programs
- 滤波数据分析
猜你喜欢

传输层 udp && tcp

【吴恩达笔记】卷积神经网络

Memcached comprehensive analysis – 3 Deletion mechanism and development direction of memcached
Visit Amazon memorydb and build your own redis memory database

煮茶论英雄!福建省发改委、市营商办领导一行莅临育润大健康事业部交流指导

平衡二叉搜索树

Remove the screen recording reminder (seven cattle cloud demo)

将二维数组方阵顺时针旋转90°
![[camera Foundation (II)] camera driving principle and Development & v4l2 subsystem driving architecture](/img/b5/23e3aed317ca262ebd8ff4579a41a9.png)
[camera Foundation (II)] camera driving principle and Development & v4l2 subsystem driving architecture

CondaValueError: The target prefix is the base prefix. Aborting.
随机推荐
【吴恩达笔记】卷积神经网络
栈的两种实现方式
TCP_ Nodelay and TCP_ CORK
Volcano成Spark默认batch调度器
03---增反膜
CondaValueError: The target prefix is the base prefix. Aborting.
介绍BootLoader、PM、kernel和系统开机的总体流程
力扣每日一题-第25天-496.下一个更大元素Ⅰ
Tournament sort
Bld3 getting started UI
如何化解35岁危机?华为云数据库首席架构师20年技术经验分享
ping: www.baidu. Com: unknown name or service
多线程收尾
Memcached comprehensive analysis – 5 Memcached applications and compatible programs
Multi view function in blender
OSI and tcp/ip model
Call process of package receiving function
[camera Foundation (I)] working principle and overall structure of camera
双链表实现
TDengine可通过数据同步工具 DataX读写