题目链接: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]

最新文章

  1. redis数据结构详解之Hash(四)
  2. 如何创建一个简单的C++同步锁框架(译)
  3. css2 [lang|=en] 误区
  4. table表格中的内容溢出布局方式
  5. 关于seajs模块化的搭建
  6. Access自动编号的初始值设置及重置编号
  7. Swing列表框组件
  8. poj2154-color-polyan次二面体+欧拉函数优化
  9. Jquery 实现banner图滚动效果
  10. NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64
  11. Web前端发展简史
  12. LightOJ 1220 Mysterious Bacteria 水题
  13. 海量数据解决思路之BitMap
  14. Python中enumerate()的使用方法
  15. Java对【JSON数据的解析】--fastjson解析法
  16. [BZOJ1609] [Usaco2008 Feb] Eating Together麻烦的聚餐 (dp)
  17. BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】
  18. Gradle打jar包命令
  19. DirectX11 With Windows SDK--12 深度/模板状态、平面镜反射绘制
  20. ERC20数字货币ProxyOverflow存在漏洞

热门文章

  1. 关于iframe的滚动条,如何去掉水平滚动条或垂直滚动条
  2. Java Io(数据输入输出流)
  3. mongodb 维护
  4. $state.go页面不刷新数据
  5. Java学习之强引用,弱引用,软引用 与 JVM
  6. 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
  7. PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。
  8. Python自动化之socketserver模块
  9. vtigerCRM5.4的安装和汉化 ubuntu
  10. strcpy C++实现