程序员必知:国庆清北Day5T3holyshit

简介: 程序员必知:国庆清北Day5T3holyshit

一道神题 (holyshit)

Time Limit:1000ms Memory Limit:128MB

题目描述

LYK有n个数ai。

它想找两段互不相交的区间。

要求:不存在一个数在这两段区间中总共的出现次数超过1次。

LYK想使得取出的两段区间的长度的和尽可能大。

问这个值最大是多少。

输入格式(holyshit.in)

第一行一个数n。

接下来一行n个数ai。

输出格式(holyshit.out)

一个数表示可能的最大值是多少

输入样例

10

//代码效果参考: http://www.zidongmutanji.com/zsjx/176575.html

3 1 2 1 2 4 5 4 5 6

输出样例

6

样例解释

取区间【1,3】和【8,10】是最优的。

数据范围

对于20%的数据n<=10。

对于40%的数据n<=50。

对于60%的数据n<=200。

对于100%的数据2<=n<=2000,1<=ai<=n。

g【i】【j】 表示 【i,j】取一段子区间,没有元素重复,使得子区间长度最长 n^2

g【i】【j-1】 g【i+1】【j】 【i,j】没有元素重复

1 for (i=n; i>=1; i--){

2 for (j=1; j<=n; j++) v【j】=false; FLAG=true;

3 for (j=i; j<=n; j++){

4 if (v【a【j】】) FLAG=false;

5 v【a【j】】=true;

6 if (FLAG) g【i】【j】=j-i+1; else g【i】【j】=max(g【i+1】【j】,g【i】【j-1】);

7 }

8 }

先把所有符合条件的区间全部搞出来,由这些区间取扩展到g更大

【A,B】是合法的, 则 g【A】【B】=B-A+1 g【l】【r】 l=B 都有g【l】【r】>=B-A+1 n^2

先枚举第一段区间的右端点r,当l=1时,求出所有×的位置,并求出第二段区间能取的最大长度。

随着l往右走,部分×被解锁,更新第二段区间的最大长度(并查集实现),然后更新答案。

f【i】表示在并查集树上的父亲,i的祖先就表示从i出发向右最近×的位置。

x这个位置被解锁了,getf(x+1)表示新增的区间右端点在哪里, 更新f呢,f【x】=getf(x+1);

相关文章
|
7月前
|
前端开发 JavaScript Java
2023,半路转行程序员的第一年
键盘敲着总结,抬头看桌面的日期,转眼间来到了 2024 年,时间就这么悄悄的流逝。本来想 12 月底就把总结给写完的,结果一拖,拖到了 2024😂
93 0
2023,半路转行程序员的第一年
|
6月前
|
人工智能 程序员
程序员必知:国庆清北Day5T3holyshit
程序员必知:国庆清北Day5T3holyshit
25 0
|
网络协议 搜索推荐 JavaScript
双非硕士的辛酸求职之旅--第 5 篇:好开心我进入了面试环节中,那么我该如何自我介绍?
双非硕士的辛酸求职之旅--第 5 篇:好开心我进入了面试环节中,那么我该如何自我介绍?
171 0
双非硕士的辛酸求职之旅--第 5 篇:好开心我进入了面试环节中,那么我该如何自我介绍?
|
消息中间件 NoSQL 算法
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
194 0
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
|
机器学习/深度学习 算法 小程序
双非硕士的辛酸求职回忆录: 第 3 篇 也谈谈校招项目面试究竟该注意什么及我是如何准备开发项目的
双非硕士的辛酸求职回忆录: 第 3 篇 也谈谈校招项目面试究竟该注意什么及我是如何准备开发项目的
276 0
|
SQL 前端开发 Java
Java开发:19届二本技术渣,校招与工作一个月辞职后的上岸之路
Java开发:19届二本技术渣,校招与工作一个月辞职后的上岸之路
181 0
|
机器学习/深度学习 算法框架/工具 流计算
情人节来了!程序员应该如何优雅的度过?
祝大家情人节快乐!内有过节攻略,必看!
|
数据可视化 Java Python
9月书讯:别抱怨读书苦,那是你看世界的路
9月上新图书,小编带来7本重磅新书,文末分享你对图书的看法或者你的读书经验,有惊喜礼哦~~
2130 0
|
算法 Java
又是一年的校招季,过来人给你讲几句肺腑之言
阅读本文大概需要 10 分钟。 转眼间又到了六月底。马上就要迎来新一年的秋季校园招聘了。这对很多即将毕业的,想要从事互联网行业的同学来说,都是非常重要的一段时间。 在这期间,很多互联网公司将陆续开始校园招聘,招聘对于很多公司来说都是非常重要的,它是为公司储备优秀人才的一个重要的活动。
下一篇
DataWorks