CF1208B
CF1208B
题意:
给出n个数字,找出最小的一端连续区间进行删除操作,使其剩余元素不含重复元素,求要删除的最小区间长度
解法:
删除子段后,前缀和后缀保持不变,可能长度为0.让我们修复不包含任何重复元素的前缀,并找到我们可以获得的最大后缀而不重复元素。 我们可以使用map 来解决问题。
CODE:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
#define LL long long
#define INF 2147483647
#define N 2010
int a[N],n,ans = INF;
map<int,int> Hash;
int main() {
scanf("%d",&n);
for(int i = 1 ; i <= n ; i++)
scanf("%d",&a[i]);
int cnt = n;
while(cnt >= 1) {
if(Hash[a[cnt]] >= 1) break;
Hash[a[cnt]]++;
cnt--;
}
for (int i = 1; i <= n; i++) {
ans = min(ans, cnt - i + 1);
Hash[a[i]]++;
while (Hash[a[i]] >= 2 && cnt <= n) {
cnt++;
Hash[a[cnt]]--;
}
if (Hash[a[i]] >= 2)break;
}
printf("%d\n", ans);
system("pause");
return 0;
}
CF1208B的更多相关文章
随机推荐
- Node在Sublime Text3下环境搭建(node02)
一.下载sublime Text的nodejs插件 https://github.com/tanepiper/SublimeText-Nodejs 二.下载后解压 直接改名为nodejs 放到 Pre ...
- Python中带参数的装饰器
装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在 ...
- css布局笔记
1.display block块级元素(div.p等) inline 行内元素(a.span等) 常见的例子:把li修改成inline ,制作成水平菜单 2.max-width 来适应不同浏览器窗 ...
- ios编程时常见问题总结
(1)在UIViewController里面使用了timer,会使得controller被retain,因此在viewdisapper时应将timer置为nil,否则controller的deallo ...
- PHP 根据二维数组中的某个字段进行排序
<?php $data = array( array( 'id' => 5698, 'first_name' => 'Bill', 'last_name' => 'Gates' ...
- Java入门学习总结_02
一:注释 注释主要就是用来解释某句或者某段代码使得其他人调试更加方便.特点是在编译代码的时候不会编译注释, 不管发不发生错误.注释主要分为单行注释//(快捷键ctrl+/).多行注释/* */(快捷键 ...
- 【2017-12-12】Winform----Datagirdview使用
1.数据绑定 DataGirdView.DataSource = list集合 2.复选框 获取复选框选中状态 for (int i = 0; i < dataGridView1.RowCoun ...
- Orangepi 修改 Debian国内源
1.导出sources.list 1 cat /etc/apt/sources.list > sources.list 2.修改sources.list内容为如下: 1234 deb ...
- vba代码阅读
#If Vba7 Then #如果是运行在64位office上 Declare PtrSafe Sub...#Else #如果是运行在32位office上 Declare Sub...#EndIf 在 ...
- win10锁屏壁纸文件夹Assets中无文件问题的解决方法
一.前言 win10在锁屏时会有很多精美的壁纸,在网上查找到win10锁屏壁纸存放目录为 : C:\Users\你的用户名\AppData\Local\Packages\Microsoft.Windo ...