HDU 4217 Data Structure?(线段树)
2013-04-09 11:23
309 查看
#include <iostream> #include <cstdio> using namespace std; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 const int maxn=262154; int segs[maxn<<2],n,k; void pushUp(int rt){ segs[rt]=segs[rt<<1]+segs[rt<<1|1]; } void build(int l,int r,int rt){ if(l==r){ segs[rt]=1; return; } int mid=(l+r)>>1; build(lson),build(rson); pushUp(rt); } int query(int p,int l,int r,int rt){ if(l==r){ segs[rt]=0; return l; } int mid=(l+r)>>1,ret=0; if(p<=segs[rt<<1])ret=query(p,lson); else ret=query(p-segs[rt<<1],rson); pushUp(rt); return ret; } int main(){ int t,cas=1; scanf("%d",&t); while (t--) { scanf("%d%d",&n,&k); long long ans=0; build(1,n,1); while (k--) { int ki,t=0; scanf("%d",&ki); ans+=query(ki,1,n,1); } printf("Case %d: %I64d\n",cas++,ans); } return 0; }
相关文章推荐
- HDU 4217 Data Structure?(线段树 or 树状数组啊)
- 线段树 HDU 4217 Data Structure? 单点更新 区间查询
- HDU 4217 Data Structure?(线段树版)
- hdu 题目4217 Data Structure?(线段树,单点更新)
- Data Structure_hdu_4217(线段树).java
- HDU 4217 Data Structure?(线段树的查找和更新)
- HDU--4217 -- Data Structure? [线段树]
- hdu-4217-Data Structure? 线段树
- 叶子节点测试hdu 4217 线段树
- HDU 4217 Data Structure?
- HDU 4217 Data Structure?
- Hdu 4217 Data Structure?【二分+树状数组】
- hdu 4217 Data Structure?
- hdu 4217 Data Structure?
- hdu 4217 线段树
- HDU 4217 Data Structure?
- 【HDU 4217】【经典题 树状数组求前k大】 Data Structure?【n个数1-n,k次操作,每次取出第ki小的数。问所有取出数字之和。】
- HDU 4217 Data Structure?
- HDU 4217 Data Structure?(树状数组求前k大)
- hdu 2817 Data Structure? (线段树)