CF1208B

题意:

给出n个数字,找出最小的一端连续区间进行删除操作,使其剩余元素不含重复元素,求要删除的最小区间长度

解法:

删除子段后,前缀和后缀保持不变,可能长度为0.让我们修复不包含任何重复元素的前缀,并找到我们可以获得的最大后缀而不重复元素。 我们可以使用map 来解决问题。

CODE:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <map>
  6. using namespace std;
  7. #define LL long long
  8. #define INF 2147483647
  9. #define N 2010
  10. int a[N],n,ans = INF;
  11. map<int,int> Hash;
  12. int main() {
  13. scanf("%d",&n);
  14. for(int i = 1 ; i <= n ; i++)
  15. scanf("%d",&a[i]);
  16. int cnt = n;
  17. while(cnt >= 1) {
  18. if(Hash[a[cnt]] >= 1) break;
  19. Hash[a[cnt]]++;
  20. cnt--;
  21. }
  22. for (int i = 1; i <= n; i++) {
  23. ans = min(ans, cnt - i + 1);
  24. Hash[a[i]]++;
  25. while (Hash[a[i]] >= 2 && cnt <= n) {
  26. cnt++;
  27. Hash[a[cnt]]--;
  28. }
  29. if (Hash[a[i]] >= 2)break;
  30. }
  31. printf("%d\n", ans);
  32. system("pause");
  33. return 0;
  34. }

CF1208B的更多相关文章

随机推荐

  1. 数据结构-平衡二叉树Java实现

    1,Node.java package com.cnblogs.mufasa.BalanceBinaryTree; public class Node { Node parent; Node left ...

  2. 关于Vue中,checkBox等组件在赋值后,点击切换页面未及时更新问题

    我们经常碰到这样的问题,在v-for循环中,给某些组件(此处以checkBox为例)赋值后,组件并不能正常切换, 这是因为数据层太多,render函数没有自动更新,需手动强制刷新. 解决方法:在切换c ...

  3. js入门之函数

    一. 函数 函数可以封装一段特定功能的代码,然后通过函数名可以重复调用 1 .函数的定义 funcation 函数名 (){ 函数体 } 函数名() 调用函数 2. 函数的参数 funcation f ...

  4. CentOS 7安装Hadoop集群

    准备三台虚拟机,ip分别为192.168.220.10(master).192.168.220.11(slave1).192.168.220.12(slave2) 准备好jdk-6u45-linux- ...

  5. v-cloak 的用法

    https://blog.csdn.net/knqiufan/article/details/81002957

  6. php 生成gif 动图,可控制每张图时间

    <?php //namespace gifCreator; /** * Create an animated GIF from multiple images */ class gifcreat ...

  7. mongodb索引 多健索引

    多健索引与单键索引创建形式相同,区别在于字段的值,单键索引,顾名思义,他的值为一个单一的值,例如字符串,数字或者日期,而多健索引,他的值具有多个记录,例如一个数组,两者建立方式类似 增加一条数组记录 ...

  8. GAN学习指南:从原理入门到制作生成Demo,总共分几步?

    来源:https://www.leiphone.com/news/201701/yZvIqK8VbxoYejLl.html?viewType=weixin 导语:本文介绍下GAN和DCGAN的原理,以 ...

  9. 大数据之路week06--day01(VMware的下载与安装、安装CentOS)

    好了,从今天开始就开始正式的进入大数据道路的轨道上了,当然了,Java 也是需要不断地在日后进行反复地学习,熟练掌握.(这里我要说一下,Java种还有一些I/O流.Lambda表达式和一些常用工具类有 ...

  10. Dijkstra算法和Floyd算法

    一.简介 迪杰斯特拉(Dijkstra)算法和弗洛伊德(Flyod)算法均是用于求解有向图或无向图从一点到另外一个点最短路径. 二.Dijkstra 迪杰斯特拉算法也是图论中的明星算法,主要是其采用的 ...