hdu 1541 Stars
2024-08-22 14:03:17
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541
思路:要求求出不同等级的星星的个数,开始怎么也想不到用树状数组,看完某些大神的博客之后才用树状数组写的,搞了好久才懂得数组的更新过程
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<vector>
#include<queue>
#include<iterator>
#include<vector>
#include<set>
#define dinf 0x3f3f3f3f
typedef long long ll;
const int Max=(<<)+;
using namespace std; #define SIZE 1000005 int c[SIZE],level[SIZE],n; int Lowbit(int x)
{
return x&(-x);
} int Sum(int x)
{
int sum=;
while(x>)
{
sum+=c[x];
x-=Lowbit(x);
}
return sum;
} void Update(int i,int x)
{
while(i<=SIZE)//要把所有的与i相关的c数组中的值全部更新,不然会出错
{
c[i]+=x;
i+=Lowbit(i);
}
} int main()
{
while(~scanf("%d",&n))
{
memset(level,,sizeof(level));
memset(c,,sizeof(c));
int x,y;
for(int i=;i<n;i++)
{
scanf("%d %d",&x,&y);
level[Sum(++x)]++;
Update(x,);
/*
for(int j=0;j<10;j++)
printf("%d ",c[j]);
printf("\n");
for(int j=0;j<10;j++)
printf("%d ",level[j]);
printf("\n");
*/
}
for(int i=;i<n;i++)
printf("%d\n",level[i]);
}
return ;
}
附上样例中数组的更新过程,上面一行是c[i],下面是level[i]
最新文章
- redis数据结构详解之Hash(四)
- 如何创建一个简单的C++同步锁框架(译)
- css2 [lang|=en] 误区
- table表格中的内容溢出布局方式
- 关于seajs模块化的搭建
- Access自动编号的初始值设置及重置编号
- Swing列表框组件
- poj2154-color-polyan次二面体+欧拉函数优化
- Jquery 实现banner图滚动效果
- NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64
- Web前端发展简史
- LightOJ 1220 Mysterious Bacteria 水题
- 海量数据解决思路之BitMap
- Python中enumerate()的使用方法
- Java对【JSON数据的解析】--fastjson解析法
- [BZOJ1609] [Usaco2008 Feb] Eating Together麻烦的聚餐 (dp)
- BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】
- Gradle打jar包命令
- DirectX11 With Windows SDK--12 深度/模板状态、平面镜反射绘制
- ERC20数字货币ProxyOverflow存在漏洞
热门文章
- 关于iframe的滚动条,如何去掉水平滚动条或垂直滚动条
- Java Io(数据输入输出流)
- mongodb 维护
- $state.go页面不刷新数据
- Java学习之强引用,弱引用,软引用 与 JVM
- 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
- PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。
- Python自动化之socketserver模块
- vtigerCRM5.4的安装和汉化 ubuntu
- strcpy C++实现