题目
还是板子题
因为旋律会同时加减一个数,所以我们在差分数组上做就好了
注意因为差分了,跨越的个数要少一个
基数排序循环写反了,调了好久
qwq

/*
@Date    : 2019-07-19 10:17:22
@Author  : Adscn (adscn@qq.com)
@Link    : https://www.cnblogs.com/LLCSBlog
*/
#include<bits/stdc++.h>
using namespace std;
#define IL inline
#define RG register
#define gi getint()
#define gc getchar()
#define File(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
IL int getint()
{RG int xi=0;RG char ch=gc;bool f=0;while(ch<'0'|ch>'9')ch=='-'?f=1:f,ch=gc;while(ch>='0'&ch<='9')xi=(xi<<1)+(xi<<3)+ch-48,ch=gc;return f?-xi:xi;
}
template<typename T>
IL void pi(T k,char ch=0)
{if(k<0)k=-k,putchar('-');if(k>=10)pi(k/10,0);putchar(k%10+'0');if(ch)putchar(ch);
}
const int N=2e5+7;
int n;
int a[N];
namespace SA{int rkx[N],rky[N],rank[N],sa[N],*key1=rkx,*key2=rky;int height[N];int cnt[N],m=380;inline void init(){m=380;}inline void Qsort(){memset(cnt,0,sizeof cnt);for(int i=1;i<=n;++i)++cnt[key1[i]];for(int i=1;i<=m;++i)cnt[i]+=cnt[i-1];for(int i=n;i>=1;--i)sa[cnt[key1[key2[i]]]--]=key2[i];}inline void getsa(){key1=rkx,key2=rky;for(int i=1;i<=n;++i)key1[i]=a[i],key2[i]=i;Qsort();for(int k=1,p=0;p<n;k<<=1,m=p){p=0;for(int i=n-k+1;i<=n;++i)key2[++p]=i;for(int i=1;i<=n;++i)if(sa[i]>k)key2[++p]=sa[i]-k;Qsort();swap(key1,key2);p=key1[sa[1]]=1;for(int i=2;i<=n;++i)key1[sa[i]]=(key2[sa[i-1]]==key2[sa[i]]&&key2[sa[i-1]+k]==key2[sa[i]+k])?p:++p;}for(int i=1;i<=n;++i)rank[sa[i]]=i;}inline void getheight(){for(int i=1,k=0;i<=n;++i){if(k)--k;int s=sa[rank[i]-1];while(a[s+k]==a[i+k])++k;height[rank[i]]=k;}}
}
using namespace SA;
int check(int mid)
{int mx=sa[1],mn=sa[1];for(int i=2;i<=n;++i)if(height[i]<mid)mx=mn=sa[i];else{mn=min(sa[i],mn),mx=max(sa[i],mx);if(mx-mn>mid)return 1;}return 0;
}
int main(void)
{while(~scanf("%d",&n)){if(n==0)break;for(int i=1;i<=n;++i)a[i]=gi;--n;for(int i=1;i<=n;++i)a[i]=a[i+1]-a[i]+90;init();getsa();getheight();int l=0,r=n,ans;while(l<=r){int mid=(l+r)>>1;if(check(mid))ans=mid,l=mid+1;else r=mid-1;}printf("%d\n",ans<4?0:ans+1);return 0;}return 0;
}

转载于:https://www.cnblogs.com/LLCSBlog/p/11214084.html

【洛谷P2743】【poj 1743】[USACO5.1]乐曲主题Musical Themes相关推荐

  1. [USACO5.1] Musical Themes

    后缀数组求最长重复且不重叠子串. poj 1743 传送门 洛谷 P2743 传送门 1.子串可以"变调"(即1 3 6和3 5 8视作相同).解决办法:求字符串相邻元素的差形成新 ...

  2. [洛谷P1856] [USACO5.5]矩形周长Picture

    洛谷题目链接:[USACO5.5]矩形周长Picture 题目背景 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长 ...

  3. 洛谷1345 [Usaco5.4]奶牛的电信

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  4. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  5. 洛谷 - P1886 滑动窗口(单调队列/线段树)

    题目链接:点击查看 题目大意:给出一个由n个数构成的序列,再给出一个长度为k的窗口,这个窗口从第一个下标开始一直向后移动,每次移动一个单位,每次移动询问一次该窗口中的最大值和最小值,最后输出答案 题目 ...

  6. POJ3349,洛谷SP4354-SnowflakeSnowSnowflakes【最小表示法,hash】

    正题 洛谷评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=SP4354 POJ题目链接:http://poj.org/prob ...

  7. 洛谷UVA1328,POJ1961-Period【KMP,字符串】

    正题 洛谷评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=UVA1328 POJ链接:http://poj.org/probl ...

  8. 洛谷P1914题解——(本地测试AC但是交题爆零全WA)使用getchar();

    本题最大的坑在于: windows环境下的换行符为\r\n,linux环境的换行符为\n. 我们再来看看洛谷的部分OJ判题机数据和机制 常见"我在本地/xxOJ AC了.洛谷却不过" ...

  9. 洛谷千题复习计划(一)(Codeforces + AtCoder)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每天花一个小时简单复习一下我写过的洛谷的题目! 虽然还没有到千题,但是快了(等我复习完这些以后我 lu ...

最新文章

  1. 关于学习Python的一点学习总结(42->继承list)
  2. Caused by: java.net.UnknownHostException: localhost.localdomain: localhost.localdomain的问题解决
  3. docker导入镜像报错:invalid diffID for layer xxx: expected “sha256:xxx“, got “sha256:xxx“(文件被更改过)
  4. ASP.Net中关于WebAPI与Ajax进行跨域数据交互时Cookies数据的传递
  5. linux安装报错之:ifconfig command not found解决
  6. Apache Karaf配置远程调试
  7. 基于密集卷积神经网络的多类植物病害检测与分类
  8. ⌈洛谷1505⌋⌈BZOJ2157⌋⌈国家集训队⌋旅游【树链剖分】
  9. Utils 前端随机生成id,中文姓名
  10. 【axios】get和post请求用法
  11. 【IEEE】IEEE论文接收后proof(校样)全流程实例讲解
  12. web前端面试中常问的问题
  13. 风场可视化:绘制粒子
  14. 椭圆一般方程求解椭圆标准方程参数
  15. FCC TributePage
  16. ubuntu16.04安装ROS Kinetic(保姆式安装)
  17. 基于python的selenium两种文件上传方式
  18. Linux 查看文件MD5值
  19. Dplayer中Hls支持小解
  20. php 生成网页固定头,如何去除KingCMS PHP版头部自动生成的generator信息

热门文章

  1. Maven的依赖插件
  2. 将一个文件夹的文件复制到另一个文件夹
  3. slot多作用域 vue_vue 深度长文之slot 篇
  4. 系统工程师主要做什么_Filecoin运维工程师在做什么?
  5. FFmpeg NDK跨平台交叉编译
  6. php 返回页面重复提交,php防止表单重复提交
  7. 合工大850参考书_合肥工业大学计算机考研850上岸经验分享
  8. 计算机兴趣小组意义,信息技术兴趣小组开展之我见
  9. java中什么表示打印_在java中打印对象时会发生什么
  10. 2019网络教育计算机统考模拟试题,最新2019年网络远程教育《计算机应用基础》统考模拟题库500题(含答案)...