农夫约翰的 N 头奶牛排成一排。

每头奶牛都用一个整数品种 ID 标识,队列中第 i 头奶牛的 ID 为 Bi。

约翰认为如果有一大段连续的奶牛都具有相同的品种 ID,他的奶牛就会更加的引人注目。

为了创造这样的连续段,约翰决定选取一个特定品种 ID,并从队列中剔除所有具有此 ID 的奶牛。

请帮助约翰确定,他通过这样做,能够获得的具有相同品种 ID 的最大奶牛连续段的长度。

输入格式

第一行包含整数 N。

接下来 N 行,每行包含一个 Bi。

输出格式

输出具有相同品种 ID 的最大奶牛连续段的长度。

数据范围

1≤N≤1000,
0≤Bi≤10^6,
不含所有奶牛品种都相同的数据。

输入样例:

9
2
7
3
7
7
3
7
5
7

输出样例:

4

样例解释

最初队列中奶牛的品种 ID 依次为 2,7,3,7,7,3,7,5,7。

我们去掉所有品种 ID 为 3 的奶牛,剩下的奶牛的品种 ID 依次为 2,7,7,7,7,5,7。

最大的具有相同品种 ID 的奶牛连续段的长度为 4。

源代码

观察这道题目我们可以发现,此处的双指针算法与查单词所用的双指针算法不太一样,首先我们开辟的动态数组将目标元素无差别的存储,在存储过后能够将相同元素去重,拿样例来说也就是2,7,3,7,7,3,7,5,7处理之后动态数组当中仅为2,3,5,7,而后依次将这四个元素作为待筛选元素来枚举,对于数组进行遍历的过程之中,尾指针最终停留的位置是与头指针元素不同的元素位置,也就是与头指针元素相同元素的下一个位置,因此长度的话仅仅为j-i即可,且当尾指针指向与筛选元素相同的元素时是要后移且不计数的,那么我们就利用偏移量来计算,若出现一次则偏移量-1,即最终答案为j-i+d,在进行一个筛选元素的处理之后,头尾指针的变换要注意,因为此次循环结束i会自增一,因此i要在j指针的前一个位置,在进行下一轮循环之后,因其自增一也就在了j的位置。

#include <iostream>
#include <vector>//开辟动态数组
#include <algorithm>
const int N = 100000+10;
using namespace std;
int a[N];//用于存储牛牛
vector<int> A;
int main()
{int n;cin>>n;for(int i = 1;i <= n;i ++ ){cin>>a[i];//输入数组内的元素A.push_back(a[i]);//将所有数组内的元素装进动态数组}sort(A.begin(),A.end());//对于动态数组之中的元素进行排序A.erase(unique(A.begin(),A.end()),A.end());//去重int ans=0;for(int o = 0;o < A.size();o ++ )//依次筛选动态数组当中的每个元素{for(int i = 1;i <= n;i ++ )//双指针算法形成滑动窗口{int j = i;int d = 0;//设置偏移量while(a[j]==a[i]||a[j]==A[o])//如果后指针遇见了与前指针相同的元素或者与筛选元素相同的元素那么继续后移{if(a[j]==a[i])j++;//相同元素后移if(a[j]==A[o])//与筛选元素相同则继续后移,偏移量加一{j++;d--;}}ans=max(ans,j-i+d);//最后所取得的答案即为j-i+di=j-1;//更新头指针}}cout<<ans;return 0;
}

AcWing一排奶牛相关推荐

  1. AcWing 1978. 奶牛过马路(前缀和)

    题目链接 https://www.acwing.com/problem/content/1980/ 思路 我们将这个二元组进行排序后就可以得到一个a升序序列,然后将问题转化为判断当前位置的奶牛是否合法 ...

  2. AcWing 1945. 奶牛棒球(枚举+二分)

    题目链接 https://www.acwing.com/problem/content/1947/ 思路 因为第三头牛和第二头牛的间距是在[2Y-X,3Y-2x]以内的,所以我们可以对第三头牛进行二分 ...

  3. AcWing 1959. 奶牛芭蕾(模拟,坐标变换)

    [题目描述] 为了挑战人们将奶牛视为笨拙生物的成见,农夫约翰的奶牛贝茜报名参加了芭蕾舞入门班. 她的最后一场演出是下周,约翰想帮她搭建一个足够大的长方形舞台,这样她就可以在不从舞台边沿跌落的情况下表演 ...

  4. AcWing春季每日一题 Week1

    文章目录 1.AcWing 3346. 你知道你的ABC吗 2.AcWing 3358. 放养但没有完全放养 3.AcWing 3370. 牛年 4.AcWing 3745. 牛的学术圈 I 5.Ac ...

  5. AcWing2022寒假每日一题(1 月 2 日 ~ 1 月 15 日)

    目录 1/2 AcWing 2058. 笨拙的手指 1/3 (前缀和)AcWing 2041. 干草堆 1/4 (dfs暴力枚举)AcWing 2060. 奶牛选美 1/5 (bfs)AcWing 2 ...

  6. 【ACWing】1401. 围住奶牛

    题目地址: https://www.acwing.com/problem/content/description/1403/ 农夫约翰想要建造一个围栏来围住奶牛.构建这个围栏时,必须将若干个奶牛们喜爱 ...

  7. 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 题目要求ΣfiΣgi\frac{\Sigma{f_i}}{\Sigma{g_i}}Σgi​Σfi​​的最大值,这种问题称为01分数规 ...

  8. AcWing 1855. 愤怒的奶牛(枚举+暴力)

    题目链接 https://www.acwing.com/problem/content/1857/ 思路 直接模拟每个点都是爆炸点,然后向左向右模拟即可,详情请看代码 代码 #include<b ...

  9. acwing奶牛大学

    Farmer John 计划为奶牛们新开办一所大学! 有 Ni 头奶牛可能会入学. 每头奶牛最多愿意支付 ci的学费. Farmer John 可以设定所有奶牛入学需要支付的学费. 如果这笔学费大于一 ...

最新文章

  1. 计算机配件的真假辨伪,专家教你辨真伪 “火眼金睛”辨真假配件
  2. STL 算法接口及用法说明
  3. Mr.Jin系统发布报告——WIN7 WIN8双系统下的学习模式系统
  4. java io流练习题_Java IO流经典练习题
  5. 360驱动大师要怎么操作安装打印机驱动
  6. bochs模拟器创建映像文件 、写入文件并启动
  7. Mysql支持translate函数吗_oracle 中的translate函数
  8. java程序读取文件_java,编写一个程序,可以读取文件数据
  9. Scala基础语法学习
  10. 本专栏所有力扣题目的目录链接, 刷算法题目的顺序(由易到难/面试频率)/注意点/技巧, 以及思维导图源文件问题(持续更新中)
  11. PyTorch实现Word2Vec
  12. linux车牌识别,基于嵌入式Linux的电子车牌识别系统设计与实现
  13. OSPF虚链接的基本配置
  14. 基于容器制作镜像(apache)
  15. inkscape制作向日葵
  16. Box2d平移关节(PrismaticJoint)沿轴循环往复移动
  17. 解决win10系统,pdf无法预览的问题
  18. java计算机毕业设计网上商城系统演示录像源码+系统+数据库+lw文档+mybatis+运行部署
  19. HDU-2140 Michael Scofield's letter 水题
  20. 自适应滤波器2-维纳滤波器-误差性能曲面

热门文章

  1. 百万级数据处理和定位错误_博世再秀自动驾驶肌肉!两大方案解决定位难题,进入隧道也不怕...
  2. 菜鸟学习网络以及ensp组网配置基础(一)
  3. win7游戏无法全屏问题
  4. 虚拟机识别并使用串口
  5. XNA游戏:手势触控
  6. 通过 JDK 源码学习灵活应用设计模式(上)
  7. W82 - 999、人工智能助理工程师认证
  8. 数据可视化——用Excel巧妙绘制图表及在论文中的排版技巧
  9. 基于机器学习的阿里智能助理在电商领域的架构构建与实践-CSDN公开课-专题视频课程...
  10. java package 注解,如何添加包级别注释或编辑package-info.java?