【一本通】数星星【BIT】

2024-02-25 13:30
文章标签 一本 bit 数星星

本文主要是介绍【一本通】数星星【BIT】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Date:2022.04.02
题意描述:
天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。
如果一个星星的左下方(包含正左和正下)有 k 颗星星,就说这颗星星是 k 级的。
在这里插入图片描述

例如,上图中星星 5 是 3 级的(1,2,4 在它左下),星星 2,4 是 1 级的。
例图中有 1 个 0 级,2 个 1 级,1 个 2 级,1 个 3 级的星星。
给定星星的位置,输出各级星星的数目。
换句话说,给定 N 个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。
输入格式
第一行一个整数 N,表示星星的数目;
接下来 N 行给出每颗星星的坐标,坐标用两个整数 x,y 表示;
不会有星星重叠。星星按 y 坐标增序给出,y 坐标相同的按 x 坐标增序给出。
输出格式
N 行,每行一个整数,分别是 0 级,1 级,2 级,……,N−1 级的星星的数目。
数据范围
1≤N≤15000,
0≤x,y≤32000
输入样例:
5
1 1
5 1
7 1
3 3
5 5
输出样例:
1
2
1
1
0

思路: y y y递增,因此每个其前面输入的纵坐标都是<=它的,因此只需找到横坐标<=它的数量即可,区间求和BIT。
代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N = 4e4+10;
typedef long long LL;
LL n,m,tr[N],a[N],cnt[N];
LL lowbit(LL x) {return x&-x;}
void add(LL x,LL c)
{for(int i=x;i<=N;i+=lowbit(i)) tr[i]+=c;//注意爬树时要到N
}
LL getsum(LL x)
{LL res=0;for(int i=x;i;i-=lowbit(i)) res+=tr[i];return res;
}
int main()
{cin>>n;for(int i=1;i<=n;i++){LL x,y;cin>>x>>y;x++;//bit不适用于下标为0cnt[getsum(x)]++;add(x,1);}for(int i=0;i<n;i++) cout<<cnt[i]<<'\n';return 0;
}

这篇关于【一本通】数星星【BIT】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745618

相关文章

Linux使用粘滞位 (t-bit)共享文件的方法教程

《Linux使用粘滞位(t-bit)共享文件的方法教程》在Linux系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(StickyBit或t-bit)是实现共享目录安全性的重要工具之一,本文将... 目录文件共享的常见场景基础概念linux 文件权限粘滞位 (Sticky Bit)设置共享目录并配置粘

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

【简历】25届南京某一本JAVA简历:简历通过率还好,但是拿不到OFFER

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 今天看一份25届南京某一本大学的Java简历。 这个简历呢,学校是一本。我们说上来先要定校招层次,这个层次就按照中厂来讲。因为现在很多的双非一本目标都是在中厂。 这个同学有个实习经历,一本有八成的同学主项目都是重复的。HR他只能看到项目重不重复,要点对不对他不知道,就从这个角度来看,这位同学

【HDU】5333 Undirected Graph【LCT+BIT】

传送门:【HDU】5333 Undirected Graph my  code: my~~code: #pragma comment(linker, "/STACK:1024000000")#include <stdio.h>#include <string.h>#include <map>#include <algorithm>using namespace std ;typed

【HDU】5574 Colorful Tree【子树染色,询问子树颜色数——线段树+bit+lca+set】

题目链接:【HDU】5574 Colorful Tree 题目大意:对一个子树染色,询问一个子树的颜色数。 题目分析: set set维护每种颜色所在的 dfs dfs序区间,修改均摊 nlogn nlogn。 #include <bits/stdc++.h>using namespace std ;typedef long long LL ;typedef pair < int , i

Python基础知识:bit(比特)与Byte(字节)的区别与关系

1.bit:位 (小写b) 也称比特 是英文 binary digit的缩写 二进制数系统中,每个0或1就是一个位(bit) 位是数据存储(计算机中信息)的最小单位 计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32位数据 2.Byte:字节(大写B) 8bit就称为一个字节(Byte), 1Byte=8bit 记为Byte或B,是计算机中信息的

mysql关于bit类型用法

本文来源于:http://www.server110.com/mysql/201403/7117.html Mysql关于bit类型的用法: 官方的资料如下: 9.1.5. 位字段值 可以使用b'value'符号写位字段值。value是一个用0和1写成的二进制值。 位字段符号可以方便指定分配给BIT列的值: mysql> CREATE TABLE t (b BIT

【华为OJ】求最大连续bit数

题目描述 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字 输出: 无 返回: 对应的二进制数字中1的最大连续数 输入描述: 输入一个byte数字 输出描述: 输出转成二进制之后连续1的个数 输入例子: 3 输出例子: 2 题目分析 方法一:将输入数字转换成二进制,统计连

【简历】25届重庆某一本JAVA简历:比赛项目描述都是无用的废话

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这是一个重庆某一本大学25届硕士的Java简历,这个简历,其实还是有一定东西的,然后我们说这个,这是一个重点类的一个一本,所以我们说就按照大厂来讲,但是,其实这后面的这个项目经历不行,就按大厂来讲吧,但是这个按大厂的话,这个学校在大厂里面是最差的一个背景了,他是个减分项,项目这块呢,优势不强啊,

TensorFlow 2.1.0 + Windows 10 - 64 bit + Python 3.7 安装

先来看看TensorFlow2.1.0安装要求 那就先安装 Python3.7 !!!!!!!!!!!!! 在使用Python时,我们经常需要用到很多第三方库,例如,上面提到的Pillow,以及MySQL驱动程序,Web框架Flask,科学计算Numpy等。用pip一个一个安装费时费力,还需要考虑兼容性。 推荐直接安装 Anaconda,刚好支持Python3.7 下载-安装,一