[LibreOJ]P10114数星星

Posted lsworld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LibreOJ]P10114数星星相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<cstdio>
using namespace std;
const int maxx=100500;
int m=150000,ans[maxx],c[maxx],n;
struct data
{
    int x,y;
}a[maxx];
int bow(int x)
{
    return x&(-x);
}
void update(int x,int y)
{
    while(x<=m)
    {
        c[x]+=y;
        x+=bow(x);
    }
    return;
}
int sum(int x)
{
    int ans=0;
    while(x>0)
    {
        ans+=c[x];
        x-=bow(x);
    }
    return ans;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].x>>a[i].y;
    }
    for(int i=1;i<=n;i++)
    {
        int t=a[i].x+1;//防止树状数组内数据出现0
        update(t,1);
        int v=sum(t);//确定等级
        ans[v]++;
    }
    for(int i=1;i<=n;i++)
        cout<<ans[i]<<endl;
    return 0;
}

以上是关于[LibreOJ]P10114数星星的主要内容,如果未能解决你的问题,请参考以下文章

for循环输出树木的形状java

LibreOJ2095 - 「CQOI2015」选数

LibreOJ #107. 维护全序集

LibreOJ #6220. sum(数论)

LibreOJ #526. 「LibreOJ β Round #4」子集

LibreOJ 6278 数列分块入门 2(分块区间加法,二分)