hdu 1556(树状数组)
题意:易知。。。
思路:要求对树状数组的理解。
代码实现:
#include<iostream> #include<cmath> using namespace std; int n,a[100001]; int lowbit(int x) { return x&(-x); } void build(int x,int y)//建树 { while(x<=n) { a[x]+=y; x+=lowbit(x); } } int sum(int x)//求和 { int s=0; while(x>0) { s=s+a[x]; x=x-lowbit(x); } return s; } int main() { while(scanf("%d",&n)!=EOF&&n) { int x,y; memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) { scanf("%d%d",&x,&y); build(x,1); build(y+1,-1);//关键所在 } for(i=1;i<n;i++) printf("%d ",sum(i)); printf("%d\n",sum(n)); } return 0; }
posted on 2013-03-09 15:34 后端bug开发工程师 阅读(739) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步