一开始一脸懵逼。。

  后来才想到维护一左一右俩指针l和r..表示[l,r]这段内不同种类的数字<=k+1种。

  显然最左的、合法的l随着r的增加而不减。

  顺便离散化,记一下各个种类数字出现的次数就可以算出答案了。

  时间复杂度O(n)

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5+;
struct zs{int v,id;}a[maxn];
int mp[maxn],sm[maxn];
int i,j,n,m,ans,num,K; int ra;char rx;
inline int read(){
rx=getchar(),ra=;
while((rx<''||rx>''))rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra;
}
bool cmp(zs a,zs b){return a.v<b.v;}
inline void add(int x){num+=!sm[x]++;}
inline void del(int x){num-=!--sm[x];}
int main(){
n=read(),K=read();
for(i=;i<=n;i++)a[i].v=read(),a[i].id=i;
sort(a+,a++n,cmp);int cnt=;
for(i=;i<=n;mp[a[i].id]=cnt,i++)
if(a[i].v!=a[i-].v||i==)cnt++;
int l=,r=;sm[mp[]]++,num=ans=;
for(r=;r<=n;r++){
add(mp[r]);
while(num>K+)del(mp[l]),l++;
ans=max(ans,sm[mp[r]]);
// printf("%d--%d\n",l,r);
}
printf("%d\n",ans);
}

[bzoj3048] [Usaco2013 Jan]Cow Lineup的更多相关文章

  1. bzoj3048[Usaco2013 Jan]Cow Lineup 尺取法

    3048: [Usaco2013 Jan]Cow Lineup Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 225  Solved: 159[Subm ...

  2. bzoj 3048[Usaco2013 Jan]Cow Lineup 思想,乱搞 stl

    3048: [Usaco2013 Jan]Cow Lineup Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 237  Solved: 168[Subm ...

  3. BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针

    BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针 Description Farmer John's N cows (1 <= N <= 100,000) ...

  4. [bzoj 3048] [Usaco2013 Jan]Cow Lineup

    [bzoj 3048] [Usaco2013 Jan]Cow Lineup Description 给你一个长度为n(1<=n<=100,000)的自然数数列,其中每一个数都小于等于10亿 ...

  5. BZOJ 3048: [Usaco2013 Jan]Cow Lineup 双指针

    看到这道题的第一个想法是二分+主席树(好暴力啊) 实际上不用这么麻烦,用一个双指针+桶扫一遍就行了 ~ code: #include <bits/stdc++.h> #define N 1 ...

  6. BZOJ1636: [Usaco2007 Jan]Balanced Lineup

    1636: [Usaco2007 Jan]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 476  Solved: 345[ ...

  7. bzoj 1636: [Usaco2007 Jan]Balanced Lineup -- 线段树

    1636: [Usaco2007 Jan]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 772  Solved: 560线 ...

  8. H-The Cow Lineup(POJ 1989)

    The Cow Lineup Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5367   Accepted: 3196 De ...

  9. BZOJ1612: [Usaco2008 Jan]Cow Contest奶牛的比赛

    1612: [Usaco2008 Jan]Cow Contest奶牛的比赛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 645  Solved: 433 ...

随机推荐

  1. 串String(1):串的实现(定长顺序存储结构)

    前言 PS:本文相关头文件.预编译以及typedef如下,阅读一遍以便于下面的理解: #include <stdio.h> #include <stdlib.h> #inclu ...

  2. 496. Next Greater Element I

    You are given two arrays(without duplicates)nums1andnums2wherenums1's elements are subset ofnums2. F ...

  3. 【转载】Python中的正则表达式教程

    本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...

  4. Spark源码剖析(六):Worker原理与源码剖析

    上篇文章我们剖析了Master的原理和源码,知道了当Master使用资源分配算法将资源分配完成后,就会给对应的Worker发送启动Driver或者Executor的消息,那么Worker收到这些消息后 ...

  5. jsDOM编程-拖拽层

    页面样式代码: <!doctype html><html><head><meta http-equiv="content-type" co ...

  6. 用原生实现点击删除点击的li

    简单的实现方式 <!DOCTYPE html> <html> <head> <title></title> <meta charset ...

  7. Search 命令详解

    *查: ls : 查看文件等信息 /cat: 查看文件只显示最后一页. /cat > filename:创建新文件  /cat file1 file2 > file:合并文件  / -A ...

  8. 阅读MDN文档之基本盒模型(三)

    Box properties Margin collapsing Adjacent siblings(相邻兄弟) Parent and first/last child Empty blocks Ac ...

  9. Dubbo(一) 开始认识Dubbo,分布式服务框架

    引言: 以前的车马很慢,一生只够爱一个人以前的网站人很少,一个单应用服务着一个人--------------------现在,动不动就谈什么高并发,千万级访问.单应用?BOOM!分分钟爆炸.于是,技术 ...

  10. websocket(二) websocket的简单实现,识别用户属性的群聊

    没什么好说的,websocket实现非常简单,我们直接看代码. 运行环境:jdk8 tomcat8 无须其他jar包. 具体环境支持自己百度 package com.reach.socketContr ...