HDU4417-树状数组2012 ACM/ICPC Asia Regional Hangzhou Online
2013-08-03 14:49
423 查看
题目:题目链接
这道题目的意思是给你一个数组。然后有m次询问。每次询问某个区间内小于给定值H的有多少?
典型的树状数组:
离线 树状数组
1、若 a[i].h > q[j].h,则从 i 以后的 a[i].h 也不会再对这个查询的解有影响。此时我们可以得到这个查询的解
getsum(r) - getsum(l-1) 。
2、若 a[i].h <= q[j].h,则它会且仅会对从 j 以后的每个 q[j].h 产生影响。于是我们需要在区间中对这个位置加
1,然后让 i 向后移动。
努力努力...
这道题目的意思是给你一个数组。然后有m次询问。每次询问某个区间内小于给定值H的有多少?
典型的树状数组:
离线 树状数组
1、若 a[i].h > q[j].h,则从 i 以后的 a[i].h 也不会再对这个查询的解有影响。此时我们可以得到这个查询的解
getsum(r) - getsum(l-1) 。
2、若 a[i].h <= q[j].h,则它会且仅会对从 j 以后的每个 q[j].h 产生影响。于是我们需要在区间中对这个位置加
1,然后让 i 向后移动。
#include <iostream> #include <cstdio> #include <string> #include <string.h> #include <map> #include <vector> #include <cstdlib> #include <cmath> #include <algorithm> #include <queue> #include <set> #include <stack> using namespace std; const int N=100002; int d ,ans ,n; struct node { int l,r,h,id; } q ,p ; int lowbit(int x) { return x&(-x); } int cmp(node a,node b) { return a.h<b.h; } void add(int x,int data) { for(; x<=n; x+=lowbit(x)) d[x]+=data; //注意这里的n不一定是数据量。可能是数据中最大的一个 } int getsum(int x) { int ret=0; for(; x; x-=lowbit(x)) ret+=d[x]; return ret; } int main() { int t,m,i,j,cas=1; cin >> t; while(t--) { memset(d,0,sizeof(d)); scanf("%d%d",&n,&m); for(int i=0; i<n; i++) { scanf("%d",&p[i].h); p[i].id = i+1; } for(j=0; j < m; j++) { scanf("%d%d%d",&q[j].l,&q[j].r,&q[j].h); q[j].id = j; } sort(p, p+n, cmp); sort(q, q+m, cmp); for(j=i=0; j<m; j++) { while(i < n && p[i].h <= q[j].h) { add(p[i].id,1); i++; } ans[q[j].id] = getsum(q[j].r+1) - getsum(q[j].l); } printf("Case %d:\n",cas++); for(j=0; j<m; j++) printf("%d\n",ans[j]); } return 0; }
努力努力...
相关文章推荐
- 2012 ACM/ICPC Asia Regional Hangzhou Online ,HDU4417-Super Mario
- Super Mario&&2012 ACM/ICPC Asia Regional Hangzhou Online
- 2012 ACM/ICPC Asia Regional Hangzhou Online HDOJ 4417 Super Mario
- 【树状数组】The 36th ACM/ICPC Asia Regional Beijing Site Online Contest - G Panda
- HDU 6203 ping ping ping (LCA + 树状数组, 2017 ACM/ICPC Asia Regional Shenyang Online)
- 【HDU5892 2016 ACM ICPC Asia Regional Shenyang Online A】【二维树状数组模板 区间修改】nn矩阵内子矩阵中各怪兽数量的奇偶性.cpp
- HDU 5877 Weak Pair 2016 ACM/ICPC Asia Regional Dalian Online(树状数组+离散化)
- HDU 4739 Zhuge Liang's Mines (2013 ACM/ICPC Asia Regional Hangzhou Online)
- hdu 4288 Coder (2012 ACM/ICPC Asia Regional Chengdu Online)
- 2012 ACM/ICPC Asia Regional Jinhua Online
- 2012 ACM/ICPC Asia Regional Changchun Online(hdu 4267 - 4277)线段树+dp+dfs+树形dp
- HDU4280 Island Transport(2012 ACM/ICPC Asia Regional Tianjin Online)
- hdu 4272 LianLianKan ( dp + 状态压缩 2012 ACM/ICPC Asia Regional Changchun Online)
- The 35th ACM/ICPC Asia Regional Hangzhou Site —— Online Contest hdu 3646 Fate Stay Night
- 2012 ACM/ICPC Asia Regional Changchun Online HDOJ 4272 连连看
- 2012 ACM/ICPC Asia Regional Changchun Online
- HDU 4744 Starloop System(最小费用最大流)(2013 ACM/ICPC Asia Regional Hangzhou Online)
- 2012 ACM/ICPC Asia Regional Tianjin Online [赛后解题报告]
- 2013 ACM/ICPC Asia Regional Hangzhou Online 个人总结
- HDU 4745 Two Rabbits(最长回文子序列)(2013 ACM/ICPC Asia Regional Hangzhou Online)