https://scut.online/p/243

这道题唯一难点在于如何快速确定m合法。可以统计滑动窗口中已有元素的数量。

#include<bits/stdc++.h>
using namespace std;
#define ll long long int n;
int a[]; int suma[];
int sum; int cnta[];
int cntsum; bool ok(int m){
memset(cnta,,sizeof(cnta));
cntsum=; for(int i=;i<m;i++){
if(cnta[a[i]]==){
cntsum++;
}
cnta[a[i]]++;
} if(cntsum==sum){
//m ok
return ;
} for(int i=m;i<n;i++){
{
cnta[a[i-m]]--;
if(cnta[a[i-m]]==)
cntsum--;
if(cnta[a[i]]==)
cntsum++;
cnta[a[i]]++;
}
if(cntsum==sum){
//m ok
return ;
}
} return ;
} int main(){ while(~scanf("%d",&n)){
sum=;
memset(suma,,sizeof(suma));
for(int i=;i<n;i++){
scanf("%d",&a[i]);
if(suma[a[i]]==){
sum++;
}
suma[a[i]]++;
} //printf("sum=%d\n",sum); int l=,r=n,m; int res=;
while(l<=r){
m=(l+r)/;
//cout<<m<<endl;
if(m==l){
if(ok(m)){
res=l;
}
else{
res=r;
}
break;
}
if(ok(m))
r=m;
else
l=m+;
} printf("%d\n",res);
}
}

SCUT - 243 - 宝华复习 - 二分 - 桶计数的更多相关文章

  1. SCUT - 240 - 宝华的文件系统 - 模拟

    https://scut.online/p/240 就是要小心绝对路径中也有.和..出现. #include<bits/stdc++.h> using namespace std; #de ...

  2. SCUT - 216 - 宝华科技树

    https://scut.online/p/216 演员 把这个当成dp算了半天,各种姿势,好吧,就当练习一下树dp. 假如是每个节点的层数之和,按照dp[i][j]为从i点出发获得j科技的最小费用d ...

  3. 宋宝华: 关于Linux进程优先级数字混乱的彻底澄清

    宋宝华: 关于Linux进程优先级数字混乱的彻底澄清 原创: 宋宝华 Linux阅码场 9月20日 https://mp.weixin.qq.com/s/44Gamu17Vkl77OGV2KkRmQ ...

  4. 宋宝华:Docker 最初的2小时(Docker从入门到入门)

    本文系转载,著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 最初的2小时,你会爱上Docker, ...

  5. 宋宝华:关于Ftrace的一个完整案例

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) Ftrace简介 Ftrace是Lin ...

  6. 宋宝华:Linux设备驱动框架里的设计模式之——模板方法(Template Method)

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前言 <设计模式>这本经典 ...

  7. 宋宝华: Linux内核编程广泛使用的前向声明(Forward Declaration)

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前向声明 编程定律 先强调一点:在一切可 ...

  8. 宋宝华:关于ARM Linux原子操作的实现

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 竞态无所不在 首先我们要理解竞态(ra ...

  9. NOIp知识点复习——最短路计数

    $Mingqi\_H$ NOIp 2017考挂了...gg 重新开始好了. 计划明年2月24号前复习完所有的NOIp知识点(毕竟很不熟练啊),之后到七月底前学习完省选的东西(flag?). 从现在开始 ...

随机推荐

  1. BUPT复试专题—复数集合(?)

    https://www.nowcoder.com/practice/abdd24fa839c414a9b83aa9c4ecd05cc?tpId=67&tqId=29643&rp=0&a ...

  2. 使用azure send grid发送email

    1. create a send grid account 2. remember the username/password of the send grid account watermark/2 ...

  3. weexapp 开发流程(二)框架搭建

    1.创建 入口文件 src / entry.js /** * 入口文件 */ import App from './App.vue' import router from './router' // ...

  4. const *char p和char const *p

    const *char p和char const *p,const char*p的区别 char*const p——p必须初始化,且不能指向别处,即p是指针常量: char const*p——p指向的 ...

  5. appium-java-api

    AppiumDriver getAppStrings() 默认系统语言对应的Strings.xml文件内的数据. driver.getAppStrings(String language) 查找某一个 ...

  6. java中InputStream String

    Java 中获取输入流时,有时候须要将输入流转成String,以便获取当中的内容 ,以下总结一下 InputStream 转成String 的方式  方法1: public String conver ...

  7. HDOJ1002

    #include <iostream>#include<stdio.h> using namespace std;int main(){ int T, count_T; cha ...

  8. RDLC后台自己定义报表模板

    首先封装一个公共类,统一来操作RDLC报表 using System; using System.Collections.Generic; using System.Linq; using Syste ...

  9. inheritance super overrides printMethod in Superclass override重写父方法

    Core Java Web Page http://horstmann.com/corejava.html [ inheritance ] package v1ch05.inheritance; im ...

  10. bash_action

    https://stackoverflow.com/questions/12076326/how-to-install-maven2-on-redhat-linux #!/bin/bash # Tar ...