poj1743 Musical Theme

神题!!

2333,要求可以给区间加减同一个数,然后我就懵逼了,,%%题解,可以用差分嘛2333

所以原来的区间长度差分之后就要减一了,

然后现在用sa搞出height数组,然后对于>=len(len为二分的答案长度-1)的区间,去里面sa的最大和最小的差,就是这两个子串相距的最远距离了,判断这个是不是满足>len就好

注意,不能==len,因为这是差分数组,==len的话就相当于重合

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #define N 100005
 5 #define inf 0x3f3f3f3f
 6 #define LL long long
 7 #define eps 1e-8
 8 using namespace std;
 9 inline int ra()
10 {
11     int x=0,f=1; char ch=getchar();
12     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
13     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
14     return x*f;
15 }
16 
17 int sa[2][N],rank[2][N],v[N],height[N];
18 int p=0,q=1,n;
19 int a[N];
20 
21 void get_height()
22 {
23     int k=0;
24     for (int i=1; i<=n; i++)
25     {
26         if (rank[p][i]==1) height[1]=0;
27         else
28         {
29             int j=sa[p][rank[p][i]-1];
30             while (a[i+k]==a[j+k]) k++;
31             height[rank[p][i]]=k; k?k--:k;
32         }
33     }
34 }
35 void cal_sa(int sa[N], int rank[N], int Sa[N], int Rank[N], int k)
36 {
37     for (int i=1; i<=n; i++) v[rank[sa[i]]]=i;
38     for (int i=n; i>=1; i--) if (sa[i]>k) Sa[v[rank[sa[i]-k]]--]=sa[i]-k;
39     for (int i=n-k+1; i<=n; i++) Sa[v[rank[i]]--]=i;
40     for (int i=1; i<=n; i++) Rank[Sa[i]]=Rank[Sa[i-1]]+(rank[Sa[i]]!=rank[Sa[i-1]] || rank[Sa[i]+k]!=rank[Sa[i-1]+k]);
41 }
42 void work()
43 {
44     for (int i=1; i<=n; i++) v[a[i]]++;
45     for (int i=1; i<=200; i++) v[i]+=v[i-1];
46     for (int i=1; i<=n; i++) sa[p][v[a[i]]--]=i;
47     for (int i=1; i<=n; i++) rank[p][sa[p][i]]=rank[p][sa[p][i-1]]+(a[sa[p][i]]!=a[sa[p][i-1]]);
48     for (int k=1; k<n; k<<=1,swap(p,q)) cal_sa(sa[p],rank[p],sa[q],rank[q],k);
49     get_height();
50 }
51 bool check(int len)
52 {
53     int mn=inf,mx=-inf;
54     for (int i=2; i<=n; i++)
55     {
56         if (height[i]>=len)
57         {
58             mx=max(mx,max(sa[p][i-1],sa[p][i]));
59             mn=min(mn,min(sa[p][i-1],sa[p][i]));
60             if (mx-mn>len) return 1;
61         }
62         else mn=inf,mx=-inf;
63     }
64     return 0;
65 }
66 void solve()
67 {
68     int l=0,r=n>>1,ans=0;
69     while (l<=r)
70     {
71         int mid=l+r>>1;
72         if (check(mid)) ans=mid,l=mid+1; else r=mid-1;
73     }
74     printf("%d\n",ans>=4?ans+1:0);
75 }
76 
77 int main(int argc, char const *argv[])
78 {
79     while (n=ra())
80     {
81         int last;
82         memset(v,0,sizeof(v));
83         for (int i=1; i<=n; i++)
84         {
85             int x=ra();
86             if (i!=1) a[i-1]=x-last+100;
87             last=x;
88         }
89         n--; work();
90         solve();
91     }
92     return 0;
93 }

 

转载于:https://www.cnblogs.com/ccd2333/p/6642193.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设备的分配与调度简单方案_连铸生产调度与动态重调度的优化与研究-3,炼钢技术(3)原创...

基于生产扰动分类的二阶段遗传算法求解动态重调度问题4.1引言电炉炼钢-连铸生产对整个生产的节奏要求较高&#xff0c;各个工序各个工位间配合要比较紧密&#xff0c;但实际的生产过程中总会存在许多不可避免的扰动因素&#xff0c;必须根据实时现场的监控数据来进行动态调度以…

敏捷开发总结(1)软件研发过程

敏捷开发总结&#xff08;1&#xff09;软件研发过程 转载于:https://www.cnblogs.com/lexiaofei/p/6644326.html

mysql截取字符串中的部分内容_Mysql字符串截取及获取指定字符串中的数据

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

java for循环 嵌套for循环-标签使用

continue和break可以改变循环的执行流程&#xff0c;但在多重循环中&#xff0c;这两条语句无法直接从内层循环跳转到外层循环。在C语言中&#xff0c;可以通过goto语句实现多重循环的跳转&#xff0c;但在非循环结构中使用goto语句会使程序的结构紊乱&#xff0c;可读性变差。…

WPF 窗体边框处理

一般做wpf窗口时都不会使用默认的标题栏等&#xff0c;会把他隐藏掉 此时设置以下属性 WindowStyle、AllowsTransparency、ResizeMode 中的两个或三个都能达到目的。 有一种场景&#xff0c;针对.Net 4.0及以下版本&#xff0c;4.5 直接就支持操作 1. 隐藏边框 2.保留鼠标移动到…

数据加密辅助类(默认编码UTF-8)

public final class SecurityUtil {private SecurityUtil() {}/*** 默认算法密钥*/private static final byte[] ENCRYPT_KEY { -81, 0, 105, 7, -32, 26, -49, 88 };public static final String CHARSET "UTF-8";/*** BASE64解码* * param key* return* throws Ex…

mysql 查询时间转换_数据库查询时日期的转换

首先简单说明一下&#xff0c;laravel框架中查询并打印sql语句的办法&#xff0c;不管任何时候由于sql语句报错时&#xff0c;都可以先打印一下&#xff0c;分析一下是什么原因造成的错误①引入laravel框架DB类useIlluminate\Support\Facades\DB;②开启框架日志记录DB::connect…

浅谈Spring之@Nullable、@NonNull注解

NonNull 可以标注在方法、字段、参数之上&#xff0c;表示对应的值不可以为空 Nullable 注解可以标注在方法、字段、参数之上&#xff0c;表示对应的值可以为空

事务概念和事务四大特性和隔离级别

什么是事务 事务四大特性 原生的JDBC事务处理 事务的隔离级别

python中坐标怎么表示_如何在Python中以像素表示(有限)平面上的坐标

我假设你有十进制坐标&#xff0c;比如50.3869881&#xff0c;-4.6177269&#xff0c;南北优先。在因为你有一个相当小的地图&#xff0c;我们不需要担心地球的曲率&#xff0c;我们可以假设我们有一个线性地图&#xff0c;所以地图上点的(x&#xff0c;y)坐标将是x longitude…

2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

学习的博客&#xff1a;http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本&#xff1a;4.2.0。博客的时间比较早&#xff0c;11年的&#xff0c;学习的是Spring3 MVC。不知道版本上有没有变化比较大的功能。 spring mvc教程&#xff08;六&#xff09;转发、重定向、a…

squid mysql认证_Squid 3.1.7通过mysql_auth方式认证

Squid 3.1.7通过mysql_auth方式认证(FreeBSD平台)一、下载相应软件及补丁#fetch http://people.arxnet.hu/airween/mysql_auth/mysql_auth-0.8.tar.gz#tar xvzf mysql_auth-0.8.tar.gz#cd mysql_auth-0.8#patch -p1 < ../additionalselect.patchpatching file src/confparse…

Spring事务传播属性和隔离级别

Spring事务传播属性和隔离级别 一、Spring事务传播属性&#xff08;Propagation&#xff09;&#xff1a; 1) REQUIRED&#xff08;默认属性&#xff09; 如果存在一个事务&#xff0c;则支持当前事务。如果没有事务则开启一个新的事务。 被设置成这个级别时&#xff0c;会为…

.net 解析Transfer-Encoding:chunked 秒掉网上无用方案

昨天在爬数据时&#xff0c;发现某个网站Response.Get过来的数据一直是为空。当时就很奇怪&#xff0c;认真看下了响应头。发现Transfer-Encoding:chunked这个玩意网上查了下资料一般情况HTTP的Header包含Content-Length域来指明报文体的长度。有时候服务生成HTTP回应是无法确定…

unity检测范围内敌人_Unity实现视野范围外死亡敌人的分数显示在屏幕内

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test01 : MonoBehaviour&#xff5b;Transform cam;//相机物体Vector3 pos;// Start is called before the first frame updatevoid Start()&#xff5b;pos transform.position;c…

ClickHouse之简单性能测试

前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse&#xff0c;接下来进行简单的性能测试。测试数据来源于美国民用航班的数据&#xff0c;从1987年到2017年&#xff0c;有1.7亿条。 环境&#xff1a; centos 6.3&#xff0c;32G内存&#xff0c;24核 下载脚本&#x…

mysql主从从配置详解_MySQL主从配置详解

● 本打算买个云数据&#xff0c;为我的新项目做点安全保障。阿里云&#xff0c;腾讯云转了一圈&#xff0c;两个字太贵。不就数据有备份吗&#xff0c;既然这样那我不如自己来做备份。● 家里有2个树莓派直接把mysql备份到他们上就好了&#xff0c;网上有教程&#xff0c;这就…

泛型数组

定义泛型数组 在写程序时&#xff0c;大家可能会遇到类似String[] list new String[8];的需求&#xff0c;这里可以定义String数组&#xff0c;当然我们也可以定义泛型数组&#xff0c;泛型数组的定义方法为 T[]&#xff0c;与String[]是一致的&#xff0c;下面看看用法&#…

是前端类库还是前端框架?

一、BootstrapBootstrap是一系列常用CSS和jQuery plugin的集合&#xff0c;典型的UI库&#xff0c;带给你的是栅格系统&#xff0c;是预置的按钮、表单、列表、导航、响应式等样式&#xff0c;它在你独立开发的时候非常有用。因为能节约用来设计网页的时间&#xff0c;而且这套…