题目 题意:给定n个点,求这n个点的最长同余子串。一个序列同余,当且仅当存在数m>1,使得序列中所有数在模m的意义下相等。
参考 思路:求原数组a的相邻元素的差分数组d,问题转化为求d数组的最长连续子数组,使得该数组的gcd>1,查询连续子数组的gcd可以用线段数(没看题解,一开始竟然没反应过来orz),由于又是连续连续的,且gcd的区间查询有非递增性(即子数组的gcd一定不小于母数组的gcd),可以用双指针优化。详见代码。
#include
using namespace std;
#define ll long long
const int maxn = 200010;
#define lson (rt
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?