[hoj 2678]Stars[二维树状数组]
来源:互联网 发布:日本人写的c编程 编辑:程序博客网 时间:2024/05/05 12:04
二维树状数组的含义:
sum[i][j]表示从lowbit(i)<=x<=i,lowbit(j)<=y<=j之间的元素之和.
题意:
类似poj那道Stars,扩展到了三维.
#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 15005;const int N = 1005;typedef struct point{ int x,y,z;}point;point p[MAXN];int c[N][N],s[MAXN];bool cmp(point a,point b){ if(a.z!=b.z) return a.z<b.z; if(a.y!=b.y) return a.y<b.y; return a.x<b.x;}inline int lowbit(int i){ return i&(-i);}int GetSum(int x,int y){ int ans = 0; for(int i=x; i>0; i-=lowbit(i)) for(int j=y; j>0; j-=lowbit(j)) ans += c[i][j]; return ans;}void add(int x,int y, int v){ for(int i=x;i<N;i+=lowbit(i)) for(int j=y;j<N;j+=lowbit(j)) c[i][j] += v;}int main(){ int n; while(cin>>n) { memset(c,0,sizeof(c)); memset(s,0,sizeof(s)); for(int i=1;i<=n;i++) cin>>p[i].x>>p[i].y>>p[i].z; sort(p+1,p+n+1,cmp); for(int k=1;k<=n;k++) { s[GetSum(p[k].x+1,p[k].y+1)]++; add(p[k].x+1,p[k].y+1,1); } for(int i=0;i<n-1;i++) cout<<s[i]<<" "; cout<<s[n-1]<<endl; } return 0;}
- [hoj 2678]Stars[二维树状数组]
- hduoj Stars 二维树状数组
- HDU2642 Stars 二维树状数组
- HDU2642 Stars【二维树状数组】
- HDU2642 Stars 二维树状数组
- hdu2642 Stars 二维树状数组
- hdu 2642stars(二维树状数组)
- HDU 2642 stars 二维树状数组
- hdu 2642 stars (二维树状数组)
- HDU 2642 Stars (二维树状数组)
- HDU 2642 Stars(二维树状数组)
- hdu 2642 Stars(二维树状数组)
- hdu- 2642 Stars 二维树状数组
- HDU 2642 Stars 二维树状数组应用
- hdoj--2642 Stars(二维树状数组)
- HDU 2642 Stars 二维树状数组
- HDU 2642 Stars [二维树状数组]【数据结构】
- hdu 2642 Stars (二维树状数组)
- eclipse进行关联代码
- ubuntu源详解 and 实现自己的ubuntu源 - [linux应用程序]
- Linux 关于搭建FTP服务器的总结
- 在线添加磁盘,扩展LVM卷案例
- spring mvc返回值中不包含根元素名称
- [hoj 2678]Stars[二维树状数组]
- Dx 1 error; aborting Conversion to Dalvik format failed with error 1
- Qt关于mysql数据库断开重连的问题
- STL容器学习总结
- Mapper映射语句高阶应用——ResultMap
- Gallery控件的使用
- 在项目开发中Xcode的常用功能
- 发现一个 学习bootstrap 的学习网站
- POJ3349【hash应用】【被输入外挂坑好久】【hash No.1】