hdu 题目4217 Data Structure?(线段树,单点更新)
来源:互联网 发布:直播淘宝小二 编辑:程序博客网 时间:2024/05/19 15:20
Data Structure?
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2133 Accepted Submission(s): 682
Problem Description
Data structure is one of the basic skills for Computer Science students, which is a particular way of storing and organizing data in a computer so that it can be used efficiently. Today let me introduce a data-structure-like problem for you.
Original, there are N numbers, namely 1, 2, 3...N. Each round, iSea find out the Ki-th smallest number and take it away, your task is reporting him the total sum of the numbers he has taken away.
Original, there are N numbers, namely 1, 2, 3...N. Each round, iSea find out the Ki-th smallest number and take it away, your task is reporting him the total sum of the numbers he has taken away.
Input
The first line contains a single integer T, indicating the number of test cases.
Each test case includes two integers N, K, K indicates the round numbers. Then a line with K numbers following, indicating in i (1-based) round, iSea take away the Ki-th smallest away.
Technical Specification
1. 1 <= T <= 128
2. 1 <= K <= N <= 262 144
3. 1 <= Ki <= N - i + 1
Each test case includes two integers N, K, K indicates the round numbers. Then a line with K numbers following, indicating in i (1-based) round, iSea take away the Ki-th smallest away.
Technical Specification
1. 1 <= T <= 128
2. 1 <= K <= N <= 262 144
3. 1 <= Ki <= N - i + 1
Output
For each test case, output the case number first, then the sum.
Sample Input
23 21 110 33 9 1
Sample Output
Case 1: 3Case 2: 14
单点更新,
找到该点,路径上个区间的len--;
/*2013-8-19 15:13:47Time: 562MS Memory: 6392KAuthor: zyh */#define N 262200#include<stdio.h>struct IntervalTree{int L,R,len;}tree[N*4];__int64 sum; //这里又错了一次,,注意要64位 void build(int p,int l,int r){tree[p].L = l;tree[p].R = r;tree[p].len = r-l+1;if(l==r) return;int mid = (l+r)>>1;build(p<<1,l,mid);build(p<<1|1,mid+1,r);}void change(int p,int cnt){tree[p].len--;if(tree[p].L==tree[p].R) {sum+=tree[p].L;return ;}if(cnt <= tree[p<<1].len){change(p<<1,cnt);}else if(cnt>tree[p<<1].len){change(p<<1|1,cnt-tree[p<<1].len);}}int main(){int t,n,k,i,tmp,j;scanf("%d\n",&t);for(j=1;j<=t;j++){scanf("%d%d",&n,&k);build(1,1,n);sum=0;for(i=0;i<k;i++){scanf("%d",&tmp);change(1,tmp);}printf("Case %d: %I64d\n",j,sum);} return 0;}
- hdu 题目4217 Data Structure?(线段树,单点更新)
- HDU 4217 Data Structure?(线段树的查找和更新)
- HDU 4217 Data Structure?(线段树)
- HDU--4217 -- Data Structure? [线段树]
- hdu-4217-Data Structure? 线段树
- hdu 2817 Data Structure? (线段树)
- hdu Data Structure? 线段树
- HDU 1166 线段树基础题目单点更新
- hdu 1166(线段树,单点更新)
- HDU 1166(线段树单点更新)
- HDU 1394(线段树单点更新)
- HDU--1754(线段树,单点更新)
- HDU 1754 线段树(单点更新)
- HDU-1166(线段树-单点更新)
- 杭电hdu 4217 Data Structure? 线段树
- HDU 4217 Data Structure? 线段树 OR 树状数组
- HDU 4217 Data Structure?(线段树 or 树状数组啊)
- HDOJ 题目1166 敌兵布阵(线段树单点更新)
- sicily7911. Windows
- sicily6135. Blackjack
- sicily1940. Ordering Tasks
- sicily1321. Robot
- sicily1825. Nickname
- hdu 题目4217 Data Structure?(线段树,单点更新)
- sicily1703. Obstacle Course
- sicily1122. Prerequisites?
- sicily1198. Substring
- CHM格式打不开解决方案
- sicily1155. Can I Post the lette
- sicily1625. Binary Clock
- [置顶] sicily1007. To and Fro
- sicily1010. Zipper