Data Structure_hdu_4217(线段树).java
来源:互联网 发布:python 自动化测试 编辑:程序博客网 时间:2024/05/18 09:02
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
//long过不了,WAimport java.math.BigInteger;import java.util.Scanner;public class Main{ private static Tree f[]; public static void main(String[] args) { Scanner input=new Scanner(System.in); int N=input.nextInt(); int e=0; while(e++<N){ int n=input.nextInt(); int m=input.nextInt(); f=new Tree[n*4]; BuildTree(1,1,n); BigInteger result=BigInteger.ZERO;//long过不了 for(int i=1;i<=m;i++){ int num=input.nextInt(); result=result.add(Show(1,num)); } System.out.println("Case "+e+": "+result); } } private static BigInteger Show(int n, int num) { --f[n].len; if(f[n].left==f[n].right){ return BigInteger.valueOf(f[n].left); } int p=n<<1; if(num<=f[p].len){ return Show(p,num); } else{ return Show(p+1,num-f[p].len); } } private static void BuildTree(int n, int left, int right) { f[n]=new Tree(left,right,right-left+1,(left+right)>>1); if(left==right) return; int num=n<<1; BuildTree(num,left,f[n].mid); BuildTree(num+1,f[n].mid+1,right); }}class Tree{ int left,right,len,mid; public Tree(int left, int right, int len, int mid) { this.left = left; this.right = right; this.len = len; this.mid = mid; }}
//long过不了,90078002013-08-19 19:23:06Accepted42178390MS32508K1459 BJavazhangyiimport java.util.Scanner;public class Main{ private static Tree f[]; public static void main(String[] args) { Scanner input=new Scanner(System.in); int N=input.nextInt(); int e=0; while(e++<N){ int n=input.nextInt(); int m=input.nextInt(); f=new Tree[n*4]; BuildTree(1,1,n); double result=0; for(int i=1;i<=m;i++){ int num=input.nextInt(); result+=Show(1,num); } System.out.println("Case "+e+": "+String.format("%.0f", result)); } } private static double Show(int n, int num) { --f[n].len; if(f[n].left==f[n].right){ return f[n].left; } int p=n<<1; if(num<=f[p].len){ return Show(p,num); } else{ return Show(p+1,num-f[p].len); } } private static void BuildTree(int n, int left, int right) { f[n]=new Tree(left,right,right-left+1,(left+right)>>1); if(left==right) return; int num=n<<1; BuildTree(num,left,f[n].mid); BuildTree(num+1,f[n].mid+1,right); }}class Tree{ int left,right,len,mid; public Tree(int left, int right, int len, int mid) { this.left = left; this.right = right; this.len = len; this.mid = mid; }}
import java.util.LinkedList;import java.util.Scanner;public class Main{//Time Limit Exceeded421710000MS23284K534 BJavazhangyipublic static void main(String[] args) {Scanner input=new Scanner(System.in);int N=input.nextInt();for(int j=1;j<=N;j++){int n=input.nextInt();LinkedList<Integer> list=new LinkedList<Integer>();for(int i=1;i<=n;i++){list.add(i);}int m=input.nextInt();long sum=0;for(int i=0;i<m;i++){int a=input.nextInt();sum+=list.remove(a-1);}System.out.println("Case "+j+": "+sum);}}}
- Data Structure_hdu_4217(线段树).java
- hdu4217 Data Structure? 线段树
- hdu Data Structure? 线段树
- hdu4217 Data Structure?(线段树)
- 线段树 Codeforces292E Copying Data
- CF292E Copying Data【线段树】
- HDU 4217 Data Structure?(线段树)
- HDU4217-Data Structure?(线段树)
- hdu 2817 Data Structure? (线段树)
- HDU--4217 -- Data Structure? [线段树]
- hdu-4217-Data Structure? 线段树
- CodeForces 292E Copying Data (线段树)
- HDU4217 Data Structure(线段树)
- Data Structure: Segment Tree 线段树
- 杭电hdu 4217 Data Structure? 线段树
- codeforces 292E Copying Data(线段树)
- hdu 题目4217 Data Structure?(线段树,单点更新)
- HDU 4217 Data Structure? 线段树 OR 树状数组
- Nginx源码解析
- 初来乍到,捣鼓捣鼓前端
- [Android] 直接获取组件的宽高:Activity.onWindowFocusChanged()
- hdu 题目1754 I Hate It (线段树,区间最大值)
- MPEG-2
- Data Structure_hdu_4217(线段树).java
- Nginx-string解析
- CSS实例(四):实现TabView(页签)效果
- APP源码 教程 网页转APP 安卓Andriod应用开发 手机APP 移动网站
- 多重背包二进制优化的思考
- Nginx-array解析
- poj-2182-Lost Cows(线段树)
- 红黑树的实现代码
- A Simple Problem with Integers_poj_3468(线段树).java