上两周的cfdiv4 G1 不知道哪WA了
  • 板块学术版
  • 楼主JimmyFlower
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/16 23:12
  • 上次更新2024/9/17 10:55:52
查看原帖
上两周的cfdiv4 G1 不知道哪WA了
124676
JimmyFlower楼主2024/9/16 23:12

codeforces971 div4 G1

看了老久了,不知道哪里WA了

#include<map>
#include<set>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ri register int
using namespace std;
typedef long long ll;
const int N=2e5+10;
int T,n,m,k,l,r,a[N],ans[N];
map<int,int> s;
multiset<int> q;
void solve()
{
	q.clear(); s.clear();
	scanf("%d %d %d",&n,&k,&m);
	for(ri i=1;i<=n;i++) scanf("%d",&a[i]),a[i]-=i;
	for(ri i=1;i<=k;i++)
	{
		auto it=q.find(s[a[i]]);
		if(it!=q.end()) q.erase(it);
		s[a[i]]++;
		q.insert(s[a[i]]);
	}
	ans[1]=k-(*--q.end());
	for(ri i=2;i<=n-k+1;i++)
	{
		auto it=q.find(s[a[i-1]]);
		if(it!=q.end()) q.erase(it);
		it=q.find(s[a[i+k-1]]);
		if(it!=q.end()) q.erase(it);
		s[a[i-1]]--;
		s[a[i+k-1]]++;
		if(s[a[i-1]]) q.insert(s[a[i-1]]);
		q.insert(s[a[i+k-1]]);
		ans[i]=k-(*--q.end());
	}
	for(ri i=1;i<=m;i++)
	{
		scanf("%d %d",&l,&r);
		printf("%d\n",ans[l]);
	}
}
int main()
{
	scanf("%d",&T);
	while(T--) solve();
	return 0;
}
2024/9/16 23:12
加载中...