hdu 4417 Super Mario
2012-09-26 10:16
169 查看
http://acm.hdu.edu.cn/showproblem.php?pid=4417
线段树 or 树状数组 都可以
先把问题 和 和 砖块 分别按高度排序
在求解区间答案时 根据要求的高度 将小于这个高度的砖块全部插入 再求解即可
代码:
线段树 or 树状数组 都可以
先把问题 和 和 砖块 分别按高度排序
在求解区间答案时 根据要求的高度 将小于这个高度的砖块全部插入 再求解即可
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <queue> #include <vector> #include <algorithm> #define LL long long //#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const int N=100005; int c ; struct q { int l,r,h,I; int ans; }qt ; struct inh { int h,I; }in ; int n; int lowbit(int x) { return x&(-x); } void Add(int x) { while(x<=n) { ++c[x]; x+=lowbit(x); } } int Sum(int x) { int temp=0; while(x>=1) { temp+=c[x]; x-=lowbit(x); } return temp; } bool cmpqt(q x,q y) { return x.h<y.h; } bool cmpin(inh x,inh y) { return x.h<y.h; } bool cmpI(q x,q y) { return x.I<y.I; } int main() { //freopen("data.txt","r",stdin); int T; scanf("%d",&T); for(int ca=1;ca<=T;++ca) { int m; scanf("%d %d",&n,&m); for(int i=1;i<=n;++i) { scanf("%d",&in[i].h); in[i].I=i; } for(int i=0;i<m;++i) { scanf("%d %d %d",&qt[i].l,&qt[i].r,&qt[i].h); ++qt[i].l;++qt[i].r; qt[i].I=i; } sort(qt,qt+m,cmpqt); sort(in+1,in+n+1,cmpin); memset(c,0,sizeof(c)); int l=1; for(int i=0;i<m;++i) { while(in[l].h<=qt[i].h&&l<=n) { Add(in[l].I); ++l; } qt[i].ans=Sum(qt[i].r)-Sum(qt[i].l-1); } sort(qt,qt+m,cmpI); printf("Case %d:\n",ca); for(int i=0;i<m;++i) printf("%d\n",qt[i].ans); } return 0; }
相关文章推荐
- HDU 4417 Super Mario(线段树||树状数组+离线操作 之树状数组篇)
- HDU 4417 Super Mario 主席树
- HDU 4417 Super Mario--离线树状数组、划分树、线段树
- HDU 4417 Super Mario 划分树 + 二分
- HDU 4417 Super Mario(树状数组离线处理 or 主席树)
- 【HDU】4417 Super Mario 线段树
- hdu 4417 Super Mario(主席树)
- [HDU 4417]Super Mario
- hdu 4417 Super Mario 离线线段树
- HDU 4417 Super Mario
- hdu 4417 Super Mario(线段树+STL)
- HDU 4417 Super Mario (树状数组、离线处理)
- Hdu 4417 Super Mario(主席树+二分)
- HDU - 4417 Super Mario (静态区间查询<=x的个数)
- HDU 4417 Super Mario
- HDU 4417 Super Mario
- hdu 4417 Super Mario(树状数组+离线处理)
- HDU 4417 —— Super Mario(树状数组,离散化,离线处理)
- HDU 4417 Super Mario [可持久化线段树 主席树]
- HDU - 4417 Super Mario (主席树)