树状数组的区间修改,单点查询
来源:互联网 发布:ipad淘宝发布宝贝 编辑:程序博客网 时间:2024/04/28 19:12
hdu 1556 Color the ball
要想区间修改的话,那么节点就必须往上更新,查询时往上累加。(区间修改,单点查询)
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=100000+5;int C[maxn];int n;int lowbit(int x){ return (-x)&x;}void update(int x,int y){ for(int i=x; i>0;i-=lowbit(i)) C[i]+=y;}int query(int x){ int s=0; for(int k=x; k<=n; k+=lowbit(k)) s+=C[k]; return s;}int main() { int a,b; while(cin>>n) { for(int i=1; i<=n; i++) C[i]=0; for(int h=0;h<n;h++) { scanf("%d%d",&a,&b); update(b,1); update(a-1,-1); } for(int j=1;j<=n;j++) if(j==n) printf("%d\n",query(j)); else printf("%d ",query(j)); //printf("%d%c",query(i),i==n?'\n':' '); } return 0;}
csu 1335 高桥和低桥(树状数组+二分)
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;const int N = 1e5+10;int c[N],m,n,k,a[N];int x[N],y[N];int lowbit(int k){ return k&(-k);}void add(int k,int he){ while(k>0) { c[k]+=he; k-=lowbit(k); }}int Q(int k){ int query=0; while(k<=n) { query+=c[k]; k+=lowbit(k); } return query;}int main(){ #ifndef ONLINE_JUDGE freopen("in.cpp","r",stdin); #endif // ONLINE_JUDGE int t,from,to,he,kkk=1; while(~scanf("%d%d%d",&n,&m,&k)) { memset(c,0,sizeof(c)); for(int i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); int cur=1; int s,t; for(int i=1;i<=m;i++) { scanf("%d %d",&s,&t); int from=upper_bound(a,a+n,cur)-a; int to=upper_bound(a,a+n,s)-a; add(from,-1); add(to,+1); cur=t; } int ans =0 ; for(int i=1;i<=n;i++) { int kk =Q(i); if(kk>=k) ans = ans+1; } printf("Case %d: %d\n",kkk++,ans); } return 0;}
相关题: hdu A Simple Problem with Integers
0 0
- 树状数组的区间修改,单点查询
- 【codevs1080】【树状数组】 单点修改 区间查询
- 【codevs1081】【树状数组】区间修改 单点查询
- 树状数组 区间修改,单点查询;
- [模板]树状数组(区间修改单点查询)
- 树状数组单点修改区间查询
- 树状数组(单点修改区间查询、区间修改单点查询、区间修改区间查询)
- 树状数组-单点修改区间查询-区间修改单点查询-区间修改区间查询
- 【树状数组】【单点修改区间求和】【区间修改单点查询】【单点修改区间最大值查询】
- 树状数组的单点更新,区间查询。
- Matrix 二维树状数组 区间修改+单点查询
- 树状数组进阶(区间修改+单点查询)
- 树状数组总结——详解(单点/区间查询, 单点/区间修改, 逆序对)
- 树状数组总结——详解(单点/区间查询, 单点/区间修改, 逆序对)
- 【洛谷】P3368 【模板】树状数组 2 树状数组区间修改、单点查询
- 树状数组 区间修改查询
- 树状数组区间修改+查询
- 【树状数组】HUD1556 区间修改单点求值
- VC++的工程文件
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-D ( ZOJ 3822 ) Domonation
- UVaOJ 1368 - DNA Consensus String
- HDU 3398 String 组合数学+N!质因数分解 卡特兰数
- ADB源码分析(二)——adb sever的启动
- 树状数组的区间修改,单点查询
- Linux中telnet的安装与配置
- Whac-a-Mole(动态规划)
- HDU 3571 N-dimensional Sphere 高斯消元法
- 开山第一篇笔记+教程(发给热爱ROS的童鞋)——ROS下读取摄像头图像 图像转换
- Intel Galileo——开机
- 把JSP放到WEB-INF后以保护JSP源代码
- ADB 源码分析(三)——adbd daemon 1、adbd daemon的启动: adbd daemon是adb devices/emulator后台运行的一个守护进程,它是由init
- 如何在三个月内学会一门外语?