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

时间:2022-08-28 19:10:27

3048: [Usaco2013 Jan]Cow Lineup

Time Limit: 2 Sec  Memory Limit: 128 MB
Submit: 237  Solved: 168
[Submit][Status][Discuss]

Description

Farmer John's N cows (1 <= N
<= 100,000) are lined up in a row. Each cow is identified by an
integer "breed ID" in the range 0...1,000,000,000; the breed ID of the
ith cow in the lineup is B(i). Multiple cows can share the same breed
ID. FJ thinks that his line of cows will look much more impressive if
there is a large contiguous block of cows that all have the same breed
ID. In order to create such a block, FJ chooses up to K breed IDs and
removes from his lineup all the cows having those IDs. Please help FJ
figure out the length of the largest consecutive block of cows with the
same breed ID that he can create by doing this.

给你一个长度为n(1<=n<=100,000)的自然数数列,其中每一个数都小于等于10亿,现在给你一个k,表示你最多可以删去k类数。数列中相同的数字被称为一类数。设该数列中满足所有的数字相等的连续子序列被叫做完美序列,你的任务就是通过删数使得该数列中的最长完美序列尽量长。

Input

* Line 1: Two space-separated integers: N and K.
* Lines 2..1+N: Line i+1 contains the breed ID B(i).

Output

* Line 1: The largest size of a contiguous block of cows with identical breed IDs that FJ can create.

Sample Input

9 1
2
7
3
7
7
3
7
5
7

INPUT DETAILS: There are 9 cows in the lineup, with breed IDs 2, 7, 3, 7, 7, 3, 7, 5, 7. FJ would like to remove up to 1 breed ID from this lineup.

Sample Output

4

OUTPUT DETAILS: By removing all cows with breed ID 3, the lineup reduces to 2, 7, 7, 7, 7, 5, 7. In this new lineup, there is a contiguous block of 4 cows with the same breed ID (7).

HINT

样例解释:
  长度为9的数列,最多只能删去1类数。
  不删,最长完美序列长度为2.
  删去一类数3,序列变成2 7 7 7 7 5 7,最长完美序列长度为4.因此答案为4.

Source

Gold

这题刚开始不会,后来才知道在一个序列中,必须是连续,然后只有k+1种数,然后找出从中的

出现过的数的次数的最大值即可,用map维护,每次直接更新当前加入后该元素个数,不需要找最大值

因为在答案中,绝对是以其结尾出现过的。

 #pragma GCC optimize(2)
#pragma G++ optimize(2)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<map> #define N 10000007
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
} int n,k,ans;
int a[N];
map<int,int>p; int main()
{
n=read(),k=read()+;
for (int i=;i<=n;i++)a[i]=read();
int num=,mx=,l=;
for (int i=;i<=n;i++)
{
if(!p[a[i]])num++;
p[a[i]]++;
while(num>k)
{
if(p[a[l]]==)p.erase(a[l]),num--;
else p[a[l]]--;
l++;
}
ans=max(ans,p[a[i]]);
// cout<<i<<" "<<ans<<endl;
}
printf("%d\n",ans);
}

bzoj 3048[Usaco2013 Jan]Cow Lineup 思想,乱搞 stl的更多相关文章

  1. &lbrack;bzoj 3048&rsqb; &lbrack;Usaco2013 Jan&rsqb;Cow Lineup

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

  2. BZOJ 3048&colon; &lbrack;Usaco2013 Jan&rsqb;Cow Lineup 双指针

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

  3. bzoj3048&lbrack;Usaco2013 Jan&rsqb;Cow Lineup 尺取法

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

  4. BZOJ&lowbar;3048&lowbar;&lbrack;Usaco2013 Jan&rsqb;Cow Lineup &lowbar;双指针

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

  5. &lbrack;bzoj3048&rsqb; &lbrack;Usaco2013 Jan&rsqb;Cow Lineup

    一开始一脸懵逼.. 后来才想到维护一左一右俩指针l和r..表示[l,r]这段内不同种类的数字<=k+1种. 显然最左的.合法的l随着r的增加而不减. 顺便离散化,记一下各个种类数字出现的次数就可 ...

  6. &lbrack;USACO2004&rsqb;&lbrack;poj1989&rsqb;The Cow Lineup(乱搞)

    http://poj.org/problem?id=1989 题意:求一个序列的最短非子序列长度l,即长度小于l的所有数的排列都是原序列的子序列(不一定要连续的),求l得最小值. 分析: 我们从左到右 ...

  7. bzoj 1636&colon; &lbrack;Usaco2007 Jan&rsqb;Balanced Lineup -- 线段树

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

  8. bzoj 1701 &lbrack;Usaco2007 Jan&rsqb;Cow School牛学校

    [Usaco2007 Jan]Cow School牛学校 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 175  Solved: 83[Submit][S ...

  9. Bzoj 1612&colon; &lbrack;Usaco2008 Jan&rsqb;Cow Contest奶牛的比赛 传递闭包&comma;bitset

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

随机推荐

  1. DHCP中继

    DHCP中继 要求: 假设公司现在有两个部门分别为 销售部门,生产部门 对这两个部门分配不同网段, 销售部门 192.168.1.0/24 生产部门 192.168.2.0/24 为了节约使用LINU ...

  2. C&plus;&plus;Primer 第十一章

    //1.关键容器支持高效的关键字查找和访问. map 关联数组:保存关键字-值对.通过关键字来查找值. set 关键字即值,即只保存关键字的容器. multimap 关键字可重复出现的map mult ...

  3. TSP问题

    之前写过一道类似的题目,Uva 1347. http://www.cnblogs.com/TreeDream/p/5981535.html 这个题目和TSP问题已经很接近了,只是描述的奇奇怪怪的,从最 ...

  4. LINUX 硬盘命令

    1. 查看硬盘情况fdisk -l 每个Disk 为一个硬盘2. 挂在新硬盘fdisk /dev/sdb #硬盘地址Command (m for help):n #新建立分区Command actio ...

  5. genome file format

    Some of the bedtools (e.g., genomeCoverageBed,complementBed, slopBed) need to know the size of the c ...

  6. Linux 命令ln

    在linux中可用ln命令创建一个文件的链接(软链接或者硬链接) 硬链接的使用: root@IdeaPad:~# ln 2.txt e.txt root@IdeaPad:~# ls 1.txt 2.t ...

  7. Git基本命令

    获取master: git clone ssh://some.i.p/some/source/~/somerep 获取branch: git clone -b branch-version ssh:/ ...

  8. maple 教程

    1 初识计算机代数系统Maple 1.1 Maple简说 1980年9月, 加拿大Waterloo大学的符号计算机研究小组成立, 開始了符号计算在计算机上实现的研究项目, 数学软件Maple是这个项目 ...

  9. 深入理解Express&period;js

    转自:http://xvfeng.me/posts/understanding-expressjs/ 英文原文更赞:http://evanhahn.com/understanding-express- ...

  10. JS添加标签效果

    JS添加标签效果 在豆瓣网上添加自己的标签是一种常见的效果,今天也就做了一个简单的demo.由于时间的问题 我不多原理,大家可以试着操作几遍就能明白其中的原理了. JSFiddle的效果如下: 点击我 ...