社区讨论
Unknown错误
学术版参与者 4已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @lo2bpd01
- 此快照首次捕获于
- 2023/10/23 11:13 2 年前
- 此快照最后确认于
- 2023/11/03 11:23 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 500000 + 10;
int read(){
char ch; int sum = 0,flag = 1;
ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-') flag = -flag; ch = getchar();}
while(ch >= '0' && ch <= '9'){sum = sum * 10 + ch - '0'; ch = getchar();}
return sum *flag;
}
int n,a[N],lft,rgt,q,sum;
int l,r,ans[N];
map <int,int> cnt;
struct node{
int id,l,r;
}b[N];
bool cmp(node a,node b){
if(a.l == b.l) return a.r < b.r;
return a.l < b.l;
}
void Del(int x){
cnt[a[x]]--;
if(cnt[a[x]] == 1) sum--;
if(cnt[a[x]] == 2) sum++;
}
void Add(int x){
cnt[a[x]]++;
if(cnt[a[x]] == 2) sum++;
if(cnt[a[x]] == 3) sum--;
}
signed main(){
n = read(); q = read();
for(int i = 1; i <= n; i++){
a[i] = read();
}
for(int i = 1; i <= q; i++){
b[i].l = read(); b[i].r = read();
b[i].id = i;
}
sort(b + 1,b + q + 1,cmp);
for(int i = 1; i <= q; i++){
while(lft < b[i].l) Del(lft++);
while(lft > b[i].l) Add(--lft);
while(rgt > b[i].r) Del(rgt--);
while(rgt < b[i].r) Add(++rgt);
ans[b[i].id] = sum;
}
for(int i = 1; i <= q; i++){
cout << ans[i] << endl;
}
return 0;
}
莫队,但是Unknown了
有大佬帮忙找找嘛
回复
共 6 条回复,欢迎继续交流。
正在加载回复...