⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2352_stars.cpp

📁 各种算法
💻 CPP
字号:
// 树状数组
// 输入数据己按(y->x)做基数排序
#include"iostream"
#define MAXN 15000
#define MAX	32002
using namespace std;

int c[MAX] = {0};//C[x] = A[x – 2^k + 1] + ... + A[x]
int lev[MAXN] = {0};

int lowbit(int n)
{	return n&(-n);
}
int sum(int n)//sum[n] = a[1]+ ... + a[n]
{	int r = 0;
	while(n != 0)
	{	r += c[n];
		n -= lowbit(n);
	}
	return r;
}
void change(int n,int k)
{	while(n < MAX)
	{	c[n] += k;
		n += lowbit(n);
	}
}
int main()
{	int n,x,y,i;
	scanf("%d",&n);
	for(i = 0;i < n;i++)
	{	scanf("%d%d",&x,&y);
		lev[sum(x+1)]++;
		change(x+1,1);
	}//因为按y非递减处理数据,y1<y2时,若x1>x2不会影响sum(x2,1),因为没计算到a[x1],只计算c[x1]
	for(i = 0;i < n;i++)
		printf("%d\n",lev[i]);//各level有多少个星星
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -