程序员必知:国庆清北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);

相关文章
|
9月前
|
前端开发 JavaScript Java
2023,半路转行程序员的第一年
键盘敲着总结,抬头看桌面的日期,转眼间来到了 2024 年,时间就这么悄悄的流逝。本来想 12 月底就把总结给写完的,结果一拖,拖到了 2024😂
108 0
2023,半路转行程序员的第一年
|
21天前
|
程序员 开发者
30 + 程序员的职场渡劫,差点被裁后我翻身了
阿飞,30+的一线城市程序员,在互联网公司工作五年后遭遇裁员危机和高强度加班。使用飞算JavaAI后,工作效率大幅提升,不仅告别了无效加班,还获得了领导的认可与晋升机会。业余时间增多,生活品质提高。现推荐参加“飞算JavaAI炫技大赛”,低门槛高奖励,参赛即有机会赢取丰厚奖品,释放编程潜力。
|
8月前
|
人工智能 程序员
程序员必知:国庆清北Day5T3holyshit
程序员必知:国庆清北Day5T3holyshit
35 0
|
9月前
|
网络协议 算法 Java
从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多
老家农村,家里好不容易把我送到大城市读书,大学非985,211,但在我们老家,能出一个本科大学生也是非常不容易的。因为农村信息的相对闭塞,我对大学专业一无所知,加上分数并非前茅,最后被调剂一个我并不喜欢的专业,这里就不透露自己是什么学校了,只能说毕业之后为了能多赚点,选择了送外卖,这一送就送了将近3年的时间。
|
架构师 程序员
入行五年的普通程序员,能赚100万吗?
入行五年的普通程序员,能赚100万吗? 你觉得可能吗?
入行五年的普通程序员,能赚100万吗?
|
SQL 前端开发 Java
Java开发:19届二本技术渣,校招与工作一个月辞职后的上岸之路
Java开发:19届二本技术渣,校招与工作一个月辞职后的上岸之路
189 0
|
机器学习/深度学习 算法框架/工具 流计算
情人节来了!程序员应该如何优雅的度过?
祝大家情人节快乐!内有过节攻略,必看!
|
新零售 程序员
工作五年“攒”够100万,程序猿们,我可没开玩笑!8条建议抱走不谢
对于一个刚刚工作几年的程序员来说,拥有100万人民币存款却是一个看似难以实现的目标,然而只要作为程序员合的你们做好合理的规划,这个目标是不难实现的,而且当五年过去之后,你可能发现你不止拥有了这100万存款,还提升了自己的“财商”。程序员如何实现工作五年“攒”够100万,本文就给你细细道来。
7146 0
|
算法 Java
又是一年的校招季,过来人给你讲几句肺腑之言
阅读本文大概需要 10 分钟。 转眼间又到了六月底。马上就要迎来新一年的秋季校园招聘了。这对很多即将毕业的,想要从事互联网行业的同学来说,都是非常重要的一段时间。 在这期间,很多互联网公司将陆续开始校园招聘,招聘对于很多公司来说都是非常重要的,它是为公司储备优秀人才的一个重要的活动。