您的位置:首页 > 其它

Wannafly模拟赛3 绝对半径2051(尺取)

2017-10-10 08:58 204 查看
题目链接:https://www.nowcoder.com/acm/contest/13/E

题解:尺取即可,枚举右端点,移动左端点。

#include<set>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<string>
#include<time.h>
#include<math.h>
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<functional>
using namespace std;
#define ll long long
#define inf 1000000000
#define mod 1000000007
#define maxn 205000
#define lowbit(x) (x&-x)
#define eps 1e-9
int a[maxn];
map<ll,int>q;
int main(void)
{
int n,k,i;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
int l=1,r=1,ans=0;
while(l<=n)
{
while(r<=n && r-l-q[a[l]]<=k)
q[a[r++]]++;
ans=max(ans,q[a[l]]);
q[a[l++]]--;
while(l<=n && a[l]==a[l-1])
q[a[l++]]--;
}
printf("%d\n",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: