蓝桥杯刷题-数星星

1265. 数星星 - AcWing题库

cpp 复制代码
/* 题目中的y是递增,不影响 */
/* 直接看作一维数组的更新维护 */
/* 将数据二进制化,拿最低位的1 */
/* 转化为线段树的解法才是核心 */
/* 思想是前缀和 */
#include <bits/stdc++.h>

using namespace std;

const int N = 15010 , M = 32010;

int level[M];
int tr[M];
int n;
/* 求最低位的1 */
int lowbit(int x)
{
    return x&-x;
}
/* 树状数组 */
int add(int x, int v)
{
    for(int i = x;i <= M;i += lowbit(i)) tr[i] += v;
}
/* 查询 */
int qy(int x)
{
    int ans = 0;
    for(int i = x; i ;i -= lowbit(i))
    {
        ans += tr[i];
    }
    return ans;
}

int main()
{
    /* 读入 */
    cin >> n;
    for(int i = 0;i < n;i ++)
    {
        int x , y;
        cin >> x >> y;
        x ++; //防止出现0的情况
        level[qy(x)] ++; // 前缀和结果
        add(x ,1);
    }
    for(int i = 0;i < n;i ++) 
        cout << level[i] << endl;
    return 0;
}
相关推荐
Swift社区1 小时前
LeetCode 462 - 最小操作次数使数组元素相等 II
算法·leetcode·职场和发展
程序员良辰1 小时前
【面试读心术】一场Redis项目面试的AB面
redis·面试·职场和发展
努力学算法的蒟蒻2 小时前
day50(12.31)——leetcode面试经典150
面试·职场和发展
良木生香3 小时前
【数据结构-初阶】二叉树---链式存储
c语言·数据结构·c++·算法·蓝桥杯·深度优先
Binky6783 小时前
力扣--贪心(2)+动规(1)
算法·leetcode·职场和发展
元亓亓亓12 小时前
LeetCode热题100--62. 不同路径--中等
算法·leetcode·职场和发展
闲看云起18 小时前
Leetcode-day4:从「移动零」到「盛最多水的容器」
数据结构·算法·leetcode·职场和发展
拿我格子衫来18 小时前
搭建公司产品wiki的开源框架选型,注重介绍wikijs框架
程序人生·信息可视化·职场和发展
天真小巫20 小时前
2025.12.30总结
职场和发展
007php00720 小时前
Git 操作偏门指南:常用和隐藏命令与问题解决
java·git·面试·职场和发展·golang·jenkins·php