首页 > 其他分享 >POJ2352 stars(树状数组)

POJ2352 stars(树状数组)

时间:2023-05-31 17:37:18浏览次数:46  
标签:return level int Lowbit memset POJ2352 stars 树状 sizeof


题目:Stars

 

#include <stdio.h>
#include <string.h>

const int N = 32005;

int C[N];

int level[N];

int Lowbit(int x)
{
    return x & (-x);
}

void Update(int x)
{
    int i;
    for(i=x;i<=N;i+=Lowbit(i))
    {
        C[i]++;
    }
}

int GetSum(int x)
{
    int sum=0,i;
    for(i=x;i>0;i-=Lowbit(i))
    {
        sum+=C[i];
    }
    return sum;
}

int main()
{
    int n,x,y;
    while(~scanf("%d",&n))
    {
        memset(C,0,sizeof(C));
        memset(level,0,sizeof(level));
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&x,&y);
            ++x;
            level[GetSum(x)]++;
            Update(x);
        }
        for(int i=0;i<n;i++)
           printf("%d\n",level[i]);
    }
    return 0;
}

 

标签:return,level,int,Lowbit,memset,POJ2352,stars,树状,sizeof
From: https://blog.51cto.com/u_16146153/6388591

相关文章

  • Gym - 101174F[(DSU)+树状数组]
    题目链接:https://vjudge.net/problem/Gym-101174F 解题思路:其实这题不同启发式合并也可以做,对rank排个序,然后在做个dfs序,把rank值小的先插入树状数组中更新,然后对每个节点查询它的dfs序的区间和就好了。对于DSU来说就更加无脑了,本来就是"暴力",所以我们直接DSU再加一个树状数组维......
  • hdu 3874(树状数组+离线算法)
    解题思路:这道题和之前的题一样,查找[l,r]区间内不重复数字的和。可以利用离线算法,实际上离线算法为了解决在查找时出现的矛盾,因为每次询问的区间大小不同,如果单独处理的话可能会对之后的查询有影响,所以离线算法帮助我们把要查询的区间先按照右端点进行排序,因为在处理更靠右的区间时,......
  • hdu 4417(树状数组+离线算法)
    解题思路:这道题要求某区间内比h小的个数,其实这里可以类似于树状数组求逆序数那样。关键是如何转换成树状数组的模型,这才是本题的难点。我们首先分析,如果知道h在该区间的哪个位置,那么剩下的就很好做了。我们还可以发现,如果找到了当前的比h小的所有点(大于的点我们先忽略掉),那么我们就......
  • poj 1195(二维树状数组)
    解题思路:这是一道很裸的二维树状数组AC:#include<stdio.h>#include<string.h>#defineN1100intc[N][N],n,arr[N][N];intlowbit(intx){returnx&(-x);}voidupdate(intx,inty,intnum){inti,j;for(i=x;i<=n;i+=lowbit(i))for(j=y;......
  • hdu 5157(manacher+前缀和+树状数组)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5157解题思路:我们可以先用mancher算法对字符串进行处理,把以每个点为中心的回文串半径求出来,然后进行处理。加入对以p为中心的点,从p-r[i]+1~p都是回文串的开头,那么对于每个回文串(开头是j)只要记录结尾从1~j-1的回文串个数,我们可......
  • 树状数组学习总结
    今天本初中生蒟蒻学习了一下\(\color{red}{树状数组}\),总结一下~~~树状数组的实现功能简介快速求前缀和(\(\color{purple}{O(log_2n)}\))修改某一个数(\(\color{green}{O(log_2n)}\))树状数组图示树状数组其实就是如图所建立的~~~下面引入一个函数——lowbitlowbit(x)是x......
  • FZU 2236(离散化+树状数组)
    【离散化】借此题记一下离散化。离散化:当题目数据很大时,但数的个数不多,可以采用离散化,降低数值,便于计算。例如数列{89,14,9,1000,2};离散化后:{4,3,2,5,1};(此操作后,数值整体降低,甚至可以当数组下标使用了)具体操作参见本题代码。离散化三部曲:1.数组ha[]存储所有存在过的......
  • 树状数组学习笔记
    树状数组(BinaryIndexedTree)是一种利用数的二进制特征进行检索的树状结构。树状数组是一种奇妙的数据结构,不仅非常高效,而且代码及其简洁。 #definelowbit(x)((x)&-(x))voidadd(intx,intd){//更新while(x<=n){tree[x]+=d;x+=lowbit(x);}}......
  • R语言布朗运动模拟股市、物种进化树状图、二项分布可视化
    本文模拟了在连续和离散时间布朗演化一些简单的方法。布朗运动的数学模型(也称为随机游动)也可以用来描述许多现象以及微小颗粒的随机运动,如股市的波动和在化石中的物理特性的演变。布朗运动是随机模式,即改变了从一次到下一个是随机从正态分布绘制均值为0.0,方差为σ2×ΔT。换句话......
  • 树状数组
    树状数组树状数组(BinaryIndexedTreeFenwickTree)是一种用于维护数列前缀和、区间和以及支持单点更新的数据结构。它能够在\(O(\logn)\)的时间复杂度内完成这些操作,比传统的前缀和算法更具有实用价值。树状数组也常常被用于解决数据结构中的某些问题,例如求逆序对、求数列......