AtCoder Beginner Contest 174 F Range Set Query 离线处理+连续区间自左向右处理+树状数组定位颜色位置(一种颜色只记录一次,绝不重复)

AtCoder Beginner Contest 174   比赛人数9817

AtCoder Beginner Contest 174   F   Range Set Query   离线处理+连续区间自左向右处理+树状数组定位颜色位置(一种颜色只记录一次,绝不重复)

总目录详见https://blog.csdn.net/mrcrack/article/details/104454762

在线测评地址https://atcoder.jp/contests/abc174/tasks/abc174_f

题目大意:给定一行有颜色的球,有Q次询问,问区间[l,r]包含的球的颜色的数量。

基本思路:离线处理+连续区间自左向右处理+树状数组定位颜色位置(一种颜色只记录一次,绝不重复)

#include 
#include 
#define maxn 500010
using namespace std;
int n,m;
int c[maxn],book[maxn],tree[maxn],ans[maxn];
struct node{
	int l,r,seq;
}q[maxn];
int lowbit(int x){
	return x&-x;
}
void add(int pos,int val){
	while(pos<=n){
		tree[pos]+=val;
		pos+=lowbit(pos);
	}
}
int sum(int pos){
	int ret=0;
	while(pos>0){
		ret+=tree[pos];
		pos-=lowbit(pos);
	}
	return ret;
}
int cmp(node a,node b){
	return a.r

 

你可能感兴趣的:(atcoder)