社区讨论
样例不过求调
P1972[SDOI2009] HH 的项链参与者 5已保存回复 22
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 22 条
- 当前快照
- 1 份
- 快照标识符
- @mhjlbiju
- 此快照首次捕获于
- 2025/11/04 04:26 4 个月前
- 此快照最后确认于
- 2025/11/04 06:32 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
struct node {
int l, r, id;
}mo[1000005];
int a[1000005], b[1000005], c, n, m, B, ll, rr, l = 1, r;
int ans[1000005];
bool cmp(node a, node b) {
if((a.l - 1) / B == (b.l - 1) / B) return a.r < b.r;
return a.l < b.l;
}
void add(int x) {
if(b[a[x]] == 0) {
c ++;
}
b[a[x]] ++;
}
void del(int x) {
if(b[a[x]] == 1) {
c --;
}
b[a[x]] --;
}
signed main() {
cin >> n;
B = sqrt(n);
for(int i = 1;i <= n;i ++) {
cin >> a[i];
}
cin >> m;
for(int i = 1;i <= m;i ++) {
cin >> mo[i].l >> mo[i].r;
mo[i].id = i;
}
sort(mo + 1, mo + m + 1, cmp);
for(int i = 1;i<= m;i++) {
ll = mo[i].l;
rr = mo[i].r;
while(l < ll) {
l ++;
del(l - 1);
}
while(r < rr) {
r ++;
add(r);
}
while(l > ll) {
l --;
add(l);
}
while(r > rr) {
r --;
del(r + 1);
}
ans[mo[i].id] = c;
}
for(int i = 1;i<= m;i ++) {
cout << a[i] << endl;
}
}
回复
共 22 条回复,欢迎继续交流。
正在加载回复...