Data Structure? HDU - 4217(线段树)

calibration的“前世今生”——从simulink开发到CANape的XCP标定 整体思路 备注: elf可简单的看作为hex和map的集合,其中包括可执行的程序、变量及其对应的地址(simulink生成代码是也可以勾选生成ASAP2的a2l文件,有变量但变量对应的地址为空,只有编译后才分配地址) 定义变量是观测值还是标定值需要在simulink中的数据字典定义变量存储类型,详见simulink系列。 1. 前期准备A2L的制作 安装完成CanApe软件 , 插上CanApe硬件( 如:vector 1640A)。打开A2L编辑软件 ASAP2 Editor(注意不是ASAP2 Vi 阅读详情

Data Structure? HDU - 4217

 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,取k次数,每次拿走第ki小的数,输出拿走的k个数的和

思路:

使用线段树,区间维护没有去走的数的个数,每个数用01标记,父节点记录个数。先判断左区间的个数是否大于等于k如果是那么直接在左区间找,当找到l=r相等时即找到了这个点,标记为0,更新父节点,相反如果大于左区间的个数,那么应该在右区间找,那么在右区间中应该找第(k-左区间个数)小的数,因为除去左边的个数了嘛,然后更新方法和左区间相同。

code:

#include <bits/stdc++.h>
using namespace std;
#define lson rt << 1
#define rson rt << 1 | 1
#define MAXN 262150
typedef long long ll;
struct node{
    int l,r,sum;
}tre[MAXN<<2];
ll ans;
void pushup(int rt){
    tre[rt].sum = tre[lson].sum + tre[rson].sum;
}
void build(int rt,int l,int r){
    tre[rt].l = l;
    tre[rt].r = r;
    if(l == r){
        tre[rt].sum = 1;
        return;
    }
    int mid = l + r >> 1;
    build(lson,l,mid);
    build(rson,mid+1,r);
    pushup(rt);
}
void update(int rt,int k){
    if(tre[rt].l == tre[rt].r){
        tre[rt].sum = 0;
        ans += tre[rt].l;
        return;
    }
    if(tre[lson].sum >= k) update(lson,k);
    else update(rson,k-tre[lson].sum);
    pushup(rt);
}
int main(){
    int T,cas = 0;
    scanf("%d",&T);
    while(T--){
        int n,m;
        scanf("%d%d",&n,&m);
        build(1,1,n);
        ans = 0;
        while(m--){
            int k;
            scanf("%d",&k);
            update(1,k);
        }
        printf("Case %d: %lld\n",++cas,ans);
    }
    return 0;
}
Prism 入门02,区域介绍 什么是区域(Region)?区域,在Prism 框架中,区域是模块化的核心的功能之一,其主要作用是降低应用程序和模块之间的耦合度。使用方式:在应用程序的界面中,划分出某块区域,并为这个区域定义一个唯一的区域名称。那么通过这个区域名称,应用程序就可以找到指定的区域。并为这个区域动态放置一些容器或控件,从而呈现在界面中。 阅读详情

相关推荐

强网杯Web题ezphp解题全记录:利用PHP反序列化与条件竞争拿下服务器

本文详细解析了强网杯Web题目ezphp的解题过程,通过PHP反序列化与条件竞争漏洞的组合利用,成功获取服务器权限。文章深入剖析了反序列化链的构造、文件上传绕过技巧以及条件竞争的实际应用,为CTF选手和Web安全研究者提供了宝贵的实战经验。

weixin_29006187的博客 376

HDU - 4217 静态求第K小的数

一、内容 题意:给定一个序列1,2, 3…n, 给定k次操作,每次输入ki,代表删除第ki小的数,最后求删除的数的总和。 二、思路 用线段树维护每个区间还剩多少个数,初始化都是1,代表本身这个数。 查询的时候判断左区间有那么多个数满足要查询的不,如果左区间的个数大于等于ki,那就去左区间找,否则去右区间找 size - sum[id << 1]。 类似主席树动态求第K小的思想。 ...

Tizzi的博客 623

f103vet6 SD卡SDIO+DMA配置避坑指南:从初始化卡死到稳定读写的全流程解析

本文详细解析STM32F103VET6芯片SD卡SDIO与DMA配置中的常见问题,从初始化卡死到读写不稳定的全流程解决方案。重点分析总线宽度配置、时钟分频调整及DMA通道管理技巧,帮助开发者避开常见陷阱,实现稳定高效的数据存储。

u0v1w2x3的博客 666

HDU-4217(树状数组)

题意就是在1~N中每次找到第k小的数并删除,范围固定第k小的数,就是树状数组或者线段树的应用,一个细节是结果需要用long long,因为262144*(262144+1)/2超过了32位表示范围。 #include #include #define MAX 262200 int n, q, c[MAX]; inline int lowbit(int x){ return x &

还有多远 794

目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解

目标检测:R-CNN、Fast R-CNN与Faster R-CNN理论讲解,根据B站up霹雳吧啦Wz总结。此文章包含R-CNN算法原理讲解、Fast R-CNN算法原理讲解、Faster R-CNN原理讲解、目标检测评价指标介绍与特征金字塔网络FPN讲解。

houjingchuan的博客 9566

TCP报文 Flood攻击原理与防御方式

TCP交互过程中包含SYN、SYN-ACK、ACK、FIN和RST报文,这几类报文也可能会被攻击者利用,海量的攻击报文会导致被攻击目标系统资源耗尽、网络拥塞,无法正常提供服务。接下来我们介绍几种常见的Flood攻击的原理和防御方式。

qq_32044265的博客 4219

HDU-4217 树状数组的应用

思路: 如果用数组暴力的话,每次都要删除操作,复杂度过高。 树状数组比较喜欢和前缀和相联系运用。比如逆序对。先对每一个最深层结点复为1,这样find(x)就可以得到x值。如果某个点已被删除,就标记为0,也就是对其-1。这样查询时,如果在该删除值的前面,无影响。在后面,这样第一个肯定就是。 注意:如果一个数的前一个数和后一个数都已经被删除,这时候第一个和为x的才是,后者也为x因为该点为0,加于不加都一样。这就是需要左侧边界的二分搜索; 具体见:https://www.cnblogs.com/kyo..

m0_50623076的博客 216

超详细!思岚S2激光雷达hector_mapping建图

使用思岚S2激光雷达,在ros平台上利用hector_mapping功能包实现建图功能

m0_50965539的博客 5591

hdu4217 Data Structure?

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 efficientl

新月 1112

游戏大厂如何解析引擎技术

本文系统解析了游戏大厂如何评估和定制游戏引擎。游戏引擎作为游戏开发的核心基础,大厂会从性能、跨平台支持、渲染能力、网络模块等8个维度进行技术解析,通过文档查勘、源码阅读、Demo测试等7个步骤深度评估。解析后通常有三种决策:直接使用、深度定制或自研重构。文章以腾讯、网易、米哈游等为例,展示了不同厂商的引擎定制策略,并分析了技术解析面临的挑战和未来趋势。最终指出,体系化的引擎技术解析是打造高质量游戏的关键,需要持续的技术投入和团队协作。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 535

2026基金本子新规必看!聚焦四大底层问题,利用AI辅助分别破解提升中标率

我拟申报的研究主题为【明确的研究主题或关键词组合】。选题方向也是评审专家关注的核心之一,申报前可以检索近五年领域前人中标项目,分析现有研究的空白与不足,并结合自身研究基础选择 “人无我有、人有我优” 的细分方向,如果是交叉学科选题,则要阐述不同学科的融合逻辑与创新点。“推动国家战略”、“带来行业发展”等宏观表述,有很多同仁都喜欢用这类话术开篇,但实际上宏大叙事无法替代具体的真实科学问题,明确不了研究要解决的核心痛点,更没有说明问题的现实针对性,评审看了往往抓不到研究的核心价值。

智能AI让学术科研更容易 294

HDU 4217 Data Structure?(树状数组求前k大)

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 efficientl

Remilia's 1948

安装openclaw时出现node.exe : npm error code EIDLETIMEOUT的解决方案

本文主要介绍了安装openclaw时出现node.exe : npm error code EIDLETIMEOUT的解决方案,希望能对学习使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

HDU4217 Data Structure(线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4217   题目大意:给n和k,以及k个数(序列ki),表示一个1到n的序列,进行k次操作,每次取出序列中第ki小的数,问经过k次操作后,取出的数的和为多少? 线段树,segTree维护的是rt节点下区间里有多少个数,每次删除时把包含第ki小的数的区间大小都减1。 结果用long long

Algobird 721

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU4217-Data Structure?(线段树)

Data Structure? Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2001    Accepted Submission(s): 623 Problem Description Data structure

YCH1035235541的专栏 817

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

HDU4217 Data Structure? 线段树

记得是上学期的一场比赛的题目。线段树的单点更新,查询的同时更新节点即可。注意数据范围使用 long long Data Structure? Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1721 Accepted Submiss

835

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hdu4217 Data Structure? 线段树

题意:不解释了。 看了别人的博客才知道要这么用线段树,用的灵活。 线段树的节点s[k].n记录剩下节点的数目。当查找到s[k].l=s[k].r即叶子节点的时候,就取这个值,然后将s[k].n=0说明这个点已经被拿了。 应该说来是 线段树 + 二分查找。 #include #include #include #include using namespace std; int n,k; co

cnh294141800的专栏 871

HDU - 4217 Data Structure?(线段树)

Data Structure? Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 3612    Accepted Submission(s): 1177   Problem Description Data structure i...

GYH0730的博客 471

hdu4217 Data Structure?(线段树)

对线段树还不清楚的请看这个入门点击打开链接 看了一天才看懂。写下来希望自己能记得更牢 #include #define N 262144 struct node { long long left,right,count; }tree[N*3]; void buildtree(long long p,long long l,long long r)//创建树,p是树的叶的编号,l表示某叶的

苏苏爱自由 2174

hdu 4217 Data Structure? · 线段树查第k小

题解 线段树动态查询基本操作 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 10; const int INF = 0x3f3f3f3f; int n, m, k; namespace segment_tree {//线段树板子 #define ls...

Yubing792289314的博客 202

杭电hdu 4217 Data Structure? 线段树

http://acm.hdu.edu.cn/showproblem.php?pid=4217 线段树,每个节点记录当前子树中还有多少个数。 //线段树 #include #define MAX 262145 int tmp; typedef struct _tree { int left; int right; int count; }tree; tree t[MAX*3]

凌语小辉 723

C - Data Structure? HDU - 4217 线段树

很奇妙的线段树 #include<bits/stdc++.h> using namespace std; const int N = 262200; struct node { int l,r,s; }t[3 * N]; int T,x,n,k; long long ans; void build(int x,int l,int r) { t[x].l = l;...

qq_29904713的博客 146

HDU 4217 Data Structure?(线段树 or 树状数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4217 Problem Description Data structure is one of the basic skills for Computer Science students, which is a particular way of storing and organi...

1886

权值线段树模板(HDU-4217 Data Structure? )

题目链接 权值线段树模板题(因为long long问题wa了一发),详细学习请参照其他大佬博客,代码仅供参考。 下面是ac代码: #include <iostream> #include <string> #include <cstring> #include <queue> #include <cmath> #include <c...

平凡人Kalzn的博客 261

hdu4217 Data Structure? _线段树

  使用线段树。线段树,也叫区间数,是一个完全二叉树,它在各个节点保存一条线段(即"子数组"),   因而常用于解决数列维护问题,他基本能保证每个操作的复杂度为O(lgN). 请看代码(有详细注释)     Data Structure?   Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K...

wylu 372

线段树 HDU 4217 Data Structure? 单点更新 区间查询

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4217 题意:就是让你输入一个N代表有1`n几个数,然后输入Q代表几次询问,每次询问输入一个K ,代表吧第K大的数删除。最后计算删除的数的大小~ 代码 #include <stdio.h> #include <string.h> #define maxn 262145*...

weixin_30411997的博客 155
上一篇: Annoying Present(思维题)
下一篇: Computational Geometry? HDU - 4216(基础dp)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值