[bzoj3048] [Usaco2013 Jan]Cow Lineup
一开始一脸懵逼。。
后来才想到维护一左一右俩指针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的更多相关文章
- bzoj3048[Usaco2013 Jan]Cow Lineup 尺取法
		3048: [Usaco2013 Jan]Cow Lineup Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 225 Solved: 159[Subm ... 
- bzoj 3048[Usaco2013 Jan]Cow Lineup 思想,乱搞 stl
		3048: [Usaco2013 Jan]Cow Lineup Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 237 Solved: 168[Subm ... 
- BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针
		BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针 Description Farmer John's N cows (1 <= N <= 100,000) ... 
- [bzoj 3048] [Usaco2013 Jan]Cow Lineup
		[bzoj 3048] [Usaco2013 Jan]Cow Lineup Description 给你一个长度为n(1<=n<=100,000)的自然数数列,其中每一个数都小于等于10亿 ... 
- BZOJ 3048: [Usaco2013 Jan]Cow Lineup 双指针
		看到这道题的第一个想法是二分+主席树(好暴力啊) 实际上不用这么麻烦,用一个双指针+桶扫一遍就行了 ~ code: #include <bits/stdc++.h> #define N 1 ... 
- BZOJ1636: [Usaco2007 Jan]Balanced Lineup
		1636: [Usaco2007 Jan]Balanced Lineup Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 476 Solved: 345[ ... 
- bzoj 1636: [Usaco2007 Jan]Balanced Lineup  -- 线段树
		1636: [Usaco2007 Jan]Balanced Lineup Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 772 Solved: 560线 ... 
- H-The Cow Lineup(POJ 1989)
		The Cow Lineup Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5367 Accepted: 3196 De ... 
- BZOJ1612: [Usaco2008 Jan]Cow Contest奶牛的比赛
		1612: [Usaco2008 Jan]Cow Contest奶牛的比赛 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 645 Solved: 433 ... 
随机推荐
- 串String(1):串的实现(定长顺序存储结构)
			前言 PS:本文相关头文件.预编译以及typedef如下,阅读一遍以便于下面的理解: #include <stdio.h> #include <stdlib.h> #inclu ... 
- 496. Next Greater Element I
			You are given two arrays(without duplicates)nums1andnums2wherenums1's elements are subset ofnums2. F ... 
- 【转载】Python中的正则表达式教程
			本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ... 
- Spark源码剖析(六):Worker原理与源码剖析
			上篇文章我们剖析了Master的原理和源码,知道了当Master使用资源分配算法将资源分配完成后,就会给对应的Worker发送启动Driver或者Executor的消息,那么Worker收到这些消息后 ... 
- jsDOM编程-拖拽层
			页面样式代码: <!doctype html><html><head><meta http-equiv="content-type" co ... 
- 用原生实现点击删除点击的li
			简单的实现方式 <!DOCTYPE html> <html> <head> <title></title> <meta charset ... 
- Search 命令详解
			*查: ls : 查看文件等信息 /cat: 查看文件只显示最后一页. /cat > filename:创建新文件 /cat file1 file2 > file:合并文件 / -A ... 
- 阅读MDN文档之基本盒模型(三)
			Box properties Margin collapsing Adjacent siblings(相邻兄弟) Parent and first/last child Empty blocks Ac ... 
- Dubbo(一) 开始认识Dubbo,分布式服务框架
			引言: 以前的车马很慢,一生只够爱一个人以前的网站人很少,一个单应用服务着一个人--------------------现在,动不动就谈什么高并发,千万级访问.单应用?BOOM!分分钟爆炸.于是,技术 ... 
- websocket(二) websocket的简单实现,识别用户属性的群聊
			没什么好说的,websocket实现非常简单,我们直接看代码. 运行环境:jdk8 tomcat8 无须其他jar包. 具体环境支持自己百度 package com.reach.socketContr ... 
