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. 
 

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 
 

Output

For each test case, output the case number first, then the sum.
 

Sample Input

2
3 2
1 1
10 3
3 9 1
 

Sample Output

Case 1: 3
Case 2: 14
 

这道题目能够用线段树,或者是树状数组来解决

对于题意而言,他的意思是给你n个数字,分别为1...n然后是

给你询问,让你去除这个数,可是询问的内容是序列,比方说1,2,3假设我取出了2,那么当询问为2的时候就是3了。由于序列变为了1,3

然后是通过线段树的标记功能

/*
Problem : 4217 ( Data Structure? ) Judge Status : Accepted
RunId : 13881893 Language : C++ Author : 24862486
Timer : 998ms
Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define lson rt << 1 , L , mid
#define rson rt << 1 | 1 , mid + 1 , R
const int maxn=262144+5;
int n,k,ki,T;
int sum[maxn<<2];
void pushup(int rt) {
sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
void build(int rt,int L,int R) {
if(L==R) {
sum[rt]=1;
return;
}
int mid=(L+R)>>1;
build(lson);
build(rson);
pushup(rt);
} int query(int p,int rt,int L,int R) {
if(L==R) {
sum[rt]=0;
return R;
}
int mid=(L+R)>>1;
int res;
if(sum[rt<<1]>=p)res=query(p,lson);//向终点靠拢
else res=query(p-sum[rt<<1],rson);
pushup(rt);
return res;
}
int main() {
scanf("%d",&T);
for(int t=1; t<=T; t++) {
scanf("%d%d",&n,&k);
build(1,1,n);
long long res=0;
for(int i=0; i<k; i++) {
scanf("%d",&ki);
res+=query(ki,1,1,n);
}
printf("Case %d: %lld\n",t,res);
}
return 0;
}

HDU 2217 Data Structure?的更多相关文章

  1. hdu 4217 Data Structure? 树状数组求第K小

    Data Structure? Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  2. hdu 4217 Data Structure?/treap

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4217 可用线段树写,效率要高点. 这道题以前用c语言写的treap水过了.. 现在接触了c++重写一遍 ...

  3. HDU 6649 Data Structure Problem(凸包+平衡树)

    首先可以证明,点积最值的点对都是都是在凸包上,套用题解的证明:假设里两个点都不在凸包上, 考虑把一个点换成凸包上的点(不动的那个点), 不管你是要点积最大还是最小, 你都可以把那个不动的点跟原点拉一条 ...

  4. HDU 5929 Basic Data Structure 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)

    Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  5. HDU 5929 Basic Data Structure 模拟

    Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  6. Basic Data Structure HDU - 5929 (这个模拟我要报警了)

    Mr. Frog learned a basic data structure recently, which is called stack.There are some basic operati ...

  7. HDU5739 Fantasia(点双连通分量 + Block Forest Data Structure)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5739 Description Professor Zhang has an undirect ...

  8. [LeetCode] All O`one Data Structure 全O(1)的数据结构

    Implement a data structure supporting the following operations: Inc(Key) - Inserts a new key with va ...

  9. [LeetCode] Add and Search Word - Data structure design 添加和查找单词-数据结构设计

    Design a data structure that supports the following two operations: void addWord(word) bool search(w ...

随机推荐

  1. Dubbo服务化最佳实践

    分包 建议将服务接口,服务模型,服务异常等均放在 API 包中,因为服务模型及异常也是 API 的一部分,同时,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP). 如果需要,也 ...

  2. ds18b20驱动及应用程序

    ---------------------------------------------------------------------------------------------------- ...

  3. CSS-文本垂直居中

    文本水平居中可以将text-align设置为center即可,垂直居中的话如果是单纯的设置vertical-align是没办法单独设置成功的,垂直居中的文字分为单行文本和多行文本,主要是两种不同的实现 ...

  4. AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法

    AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法 2018-01-18 16:13蚂蚁金服/雾霾/人工智能 导读:词向量算法是自然语言处理领域的基础算法,在序列标注.问答系统和机 ...

  5. Eclipse QuickSear的插件的说明

    https://spring.io/blog/2013/07/11/eclipse-quick-search Eclipse QuickSear的插件的说明

  6. 与IE的战斗

    对第2版的改进,工作量几乎都在UI上,不断的写css,写js,还别说,总体挺愉快的.特别是把360浏览器用顺了之后,烦人的无法刷新问题也不能困扰我了,改了js或者css文件的话,只要清除一下缓存,就可 ...

  7. Jquery的分页插件

    Jquery的分页插件, 用起来还不错. 来自: http://flaviusmatis.github.io/simplePagination.js/   下载地址: https://github.c ...

  8. PowerShell获取当前用户的权限

      function Get-CurrentUserRoles {   $SecurityPrinciple = New-Object -TypeName System.Security.Princi ...

  9. Springboot单元测试(MockBean||SpyBean)

    转载:https://blog.csdn.net/maiyikai/article/details/78483423 本来要写springboot集成netty实现的,但是想起来单元测试没总结,那就趁 ...

  10. FastDFS tracker storage 的工作原理及流程

    FastDFS tracker storage 的工作原理及流程 2013 年 3 月 11 日 – 09:22 | 1,409 views | 收藏  (No Ratings Yet) FastDF ...