PKU 2104 K-th Number

【运筹优化】VRPTW建模实战:Python+Gurobi求解带时间窗的车辆路径规划 本文详细介绍了如何使用Python和Gurobi求解带时间窗的车辆路径问题(VRPTW)。通过将物流调度难题抽象为混合整数规划模型,并逐步讲解建模、编码与求解过程,为读者提供了从理论到实践的完整指南,帮助解决物流配送中的路径优化挑战。 阅读详情
题目:http://poj.org/problem?id=2104

借此题学习了一下划分树

划分树定义: 他的每个节点保存【l, r】区间的所有元素,元素的排列顺序与输入的顺序相同,但是其两个子树的元素是所有元素排序后, 
有(l+r)/2个元素进入左子树,其余的进入右子树,同时  维护一个num[]变量, num[i]表示l->i中, 有多少个元素进入了左子树。


红色代表进入左子树的元素。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int maxn=100000;
struct TreeNode
{
	int var[maxn+10];
	int num[maxn+10];
}tn[30];
int sorted[maxn+10];
int n, m, a, b, c;
void BuildTree(int v, int left, int right)
{
	if (left==right) return;
	int mid=(left+right)>>1;
	int lchild=left, rchild=mid+1;
	int isame=mid-left+1, same=0;
	for (int i=left; i<=right; i++) if (tn[v].var[i]<sorted[mid]) isame--;
	for (int i=left; i<=right; i++)
	{
		if (i==left) tn[v].num[i]=0;
		else tn[v].num[i]=tn[v].num[i-1];
		if (tn[v].var[i]<sorted[mid])
		{
			tn[v].num[i]++;
			tn[v+1].var[lchild++]=tn[v].var[i];
		}
		else if (tn[v].var[i]>sorted[mid]) tn[v+1].var[rchild++]=tn[v].var[i];
		else
		{
			if (same<isame)
			{
				same++;
				tn[v].num[i]++;
				tn[v+1].var[lchild++]=tn[v].var[i];
			}
			else tn[v+1].var[rchild++]=tn[v].var[i];
		}
	}
	BuildTree(v+1, left, mid);
	BuildTree(v+1, mid+1, right);
}
//在区间【l, r】中查找第K大元素
//1.如果tn[v].num[r]-tn[v].num[l-1]>=k,也就是说在区间【l, r】中已经有超过k个元素进入到左子树了,并且其顺序不变,所以
//在其左子树中查找,并且其区间变成【left+tn[v].num[l-1], left+tn[v].num[r]-1】
//2.如果tn[v].num[r]-tn[v].num[l-1]<k,也就是说在区间【l, r】中少于K个元素进入左子树,那么就要在右子树中查找第k-s(s代表进入左子树的元素个数)个元素。
//其区间变为【mid+【left, l-1】中分到右子树中元素的个数+1, mid+【l, r】中分到右子树中元素的个数】。
int Query(int l, int r, int k, int v, int left, int right)
{
	if (left==right) return tn[v].var[l];
	int mid=(left+right)>>1;
	int s, ss, b, bb;
	if (l==left)
	{
		s=tn[v].num[r];
		ss=0;
	}
	else
	{
		s=tn[v].num[r]-tn[v].num[l-1];
		ss=tn[v].num[l-1];
	}
	if (s>=k) 
	{
		l=left+ss;
		r=left+ss+s-1;
		return Query(l, r, k, v+1, left, mid);
	}
	else
	{
		b=l-left-ss;
		bb=r-l+1-s;
		l=mid+b+1;
		r=mid+b+bb;
		return Query(l, r,  k-s, v+1, mid+1, right);
	}
}
int main()
{
	//freopen("in.txt", "r", stdin);
	while (scanf("%d %d", &n, &m)==2)
	{
		for (int i=1; i<=n; i++)
		{
			scanf("%d", &sorted[i]);
			tn[1].var[i]=sorted[i];
		}
		sort(sorted+1, sorted+n+1);
		BuildTree(1, 1, n);
		for (int i=0; i<m; i++)
		{
			scanf("%d %d %d", &a, &b, &c);
			printf("%d\n", Query(a, b, c, 1, 1, n));
		}
	}
	return 0;
}












        
【01】VisionMaster入门到精通——VisionMaster V4.0.0 试用版安装教程(安装试用补丁与试用授权) 本文详细介绍了海康VisionMaster 4.0.0试用版的安装步骤:首先从官网下载基础安装包、软加密试用版和示例程序(可选);安装时需按顺序完成主程序安装(选择软加密)、试用补丁安装和30天试用授权安装;最后提供了两种启动方式。文章还列出了试用版的7项功能限制,包括最多支持2个流程、2个全局相机等,并特别提醒试用版不维护、不提供补丁,建议用户转为正式版本。安装过程中若出现蓝屏需重启覆盖安装,授权失败时可参考指定解决方案。 阅读详情

相关推荐

CMake、Make、MinGw、Clang、Llvm、GCC、MSVC的区别

除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具;的缩写,MinGw是windows版本的gcc集合。并不仅是一个 C/C++ 编译器,而是一套。是微软开发的VC运行时库,3、Make和CMake是。

m0_37698164的博客 1万+

PKU2104K-th Number

K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 44766 Accepted: 14869 Case Time Limit: 2000MS Description You are working for Macrohard company in data structure

DCrusher's blog 530

【大模型微调】魔搭社区GPU进行LLaMA-Factory微调大模型自我认知

本教程介绍如何使用魔搭社区GPU资源和LLaMA-Factory工具进行大模型微调。主要内容包括环境配置、工具安装、模型训练和效果评估。通过LoRA算法进行自我认知微调,详细说明了从数据准备到模型导出的完整流程,并提供了参数调优和显存管理等实用技巧,帮助读者快速掌握大模型定制化训练方法。

LChuck的博客 2924

Pku2104 k - th number

解题方法:线段树 + 归并排序 + 二分枚举本人比较笨,这道题看了N天,主要花在二分枚举上,虽然AC,至今仍然还不是很清楚二分枚举的原理。希望牛人路过,指导下。#include  #include  const long MAX = 100001 ;inline int tMin( int u , int v ){    return ( u > v

gzwzm的专栏 641

Windows11+VS2022驱动开发环境搭建实战:从零到编译(避坑指南)

本文详细介绍了在Windows11系统下使用VS2022搭建驱动开发环境的完整流程,包括版本匹配、工具安装、环境配置及常见问题解决。重点强调了WDK与系统版本的严格匹配,以及VS2022中驱动开发组件的正确配置方法,帮助开发者高效避坑并成功编译第一个驱动程序。

weixin_29251337的博客 526

CSIT883系统分析与项目管理——Lecture3重点概念

🎈本节课,介绍了项目集成管理当中,关于NPV这个概念相关的内容,以及介绍什么是系统需求,什么时候需要开始系统需求,如何进行调查系统需求等等相关的题目,这里供大家复习参考吧!还有还有最关键的是NPV的计算,我单独写一篇博文,需要的同学快去学习吧!

AI手套的博客 1090

PKU-2104-K-th Number

K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 36045 Accepted: 11522 Case Time Limit: 2000MS Description You are working for Macr...

aodiyi6351的博客 144

Python+OpenCV实战:5分钟搞定机械臂手眼标定(眼在手上模式)

本文详细介绍了使用Python和OpenCV在5分钟内完成机械臂手眼标定(眼在手上模式)的实战教程。通过解析相机坐标系与机械臂基坐标系的转换关系,提供从数据采集到标定矩阵计算的全流程代码实现,帮助开发者快速解决AX=XB问题,提升机械臂视觉引导精度。

weixin_33670786的博客 495

pku 2104 -- K-th Number (sort +小优化水过)

<br /><br /> <br /> <br />http://poj.org/problem?id=2104<br /> <br /> <br /> K-th NumberTime Limit: 20000MS Memory Limit: 65536KTotal Submissions: 22939 Accepted: 6366Case Time Limit: 2000MS<br />DescriptionYou are working for Macrohard company in data

蓝色污点的专栏 2012

教程:使用树莓派连接Pixhawk飞控

教程:使用树莓派连接Pixhawk飞控树莓派可以与Pixhawk飞控相连,读取飞控中的状态信息,同时对飞控发送指令。树莓派作为一个更高性能的计算平台,可以运行图像识别、机器学习、实时路径规划等程序,为开源无人机带来了无限可能。本文将介绍如何在树莓派上使用APSync。不需要了解Linux,即可将树莓派连接到Pixhawk飞控。使用的器材为: Pixhawk飞控 树莓派3B(Raspberry Pi

Roger今天好好搬砖了吗 5万+

SAP项目中 Waterfall vs Agile 的深度对比分析背景:方法论的演进SAP项目实施方法论经历了显著的代际更替。早期以 ASAP(Accelerated SAP) 为代表,采用经典瀑

本文对比分析了SAP项目实施中瀑布模型(ASAP)与敏捷方法(SAP Activate)的核心差异。瀑布模型采用线性流程,需求固定但变更成本高;敏捷方法则通过迭代开发实现动态调整,强调最佳实践和用户持续参与。文章指出,SAP系统的复杂性使纯粹敏捷难以实施,需在标准化与定制化间取得平衡。最终建议根据项目特性选择方法论:稳定需求适用瀑布模型,变化频繁则推荐敏捷,而SAP Activate本质上是两者的结构化融合,代表未来趋势。关键在于匹配项目实际需求,而非盲目追随方法论潮流。

金牌架构师 344

[PKU 2104]K-th Number(归并树)

【题目大意】:看之前的那个题解~~【题目分析】:经历了ranklist倒数的悲剧事件后~~我决定学学这个归并树……那么什么是归并树呢~我习惯管这个东西叫线段树套数组……开个线段树,里面就是这个区间排完序后的数列……当然,我们不能每个节点都开,所以我们搞一个数组data[i,j],表示第i层第j个数是什么。这个层就是线段树节点所在深度~~然后呢,自然就是二分,然后

天空の行者 1448

【思考模型框架】MECE原则,确保分析时,考虑到的所有因素,既不重叠又无遗漏

MECE原则,是Mutually Exclusive and Collectively Exhaustive的缩写,中文译为“相互独立、完全穷尽”。MECE原则,这是一种逻辑思维和组织信息的方法,旨在确保分析时既没有遗漏也没有重复。MECE原则,相互独立、完全穷尽(Mutually Exclusive,Collectively Exhaustive)的原则MECE原则,确保分析时考虑到的所有因素既不重叠又无遗漏。

奶爸的编程之路,也就一周冷个三天 2751

[PKU 2104]K-th Number(树套树版)

【题目描述】:就比ZJU_2112少了个操作,没有change操作。【题目分析】:这题有比树套树更好的方法,就是归并树,我会在之后的题解中说说。这题方法跟ZJU_2112一样,二分答案就好。这题有可能是负数,所以注意二分的情况(如果直接二分答案的话就要枚举0到inf*2)。然后检查mid-inf。因为如果二分到了负数会死在里面。当然因为没有change,就可以排个序,直接枚举数

天空の行者 981

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ssm框架搭建

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

pku2104 K-th Number

题意:给定一个序列key[1..n]和m个询问{s,t,rank}(1 <= n <= 100 000, 1 <= m <= 5 000),对于每个询问输出区间[s,t]中第rank小的值 分析:由于2761和这题差不多,且数据量是这题的10倍,所以我一开始就把2761的SBT代码交上去,结果竟然是TLE,估计是栽在了"Case Time Limit: 2000MS"上面...

weixin_30300523的博客 134

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pku 2104 K-th Number && hdu 2665 Kth number 划分树

http://poj.org/problem?id=2104 http://acm.hdu.edu.cn/showproblem.php?pid=2665   题意: 给定一个长度为n的序列,求一个区间[L,R]内第K大的数; 思路: 划分树模板题。 给出个人感觉讲解比较好的连接: http://blog.sina.com.cn/s/blog_5f5353cc0100ki2e.ht...

weixin_33701251的博客 171

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

POJ2104 K-th Number——划分树——pku2104

按照铎铎大牛的AC Record做的第一题,就被虐得很惨。 这是划分树的模板题。划分树,主要是求无更改的情况下区间第k小值。建树和线段树有些类似,但是划分树是在排序的基础上,左子树记录比中间值小的值,右子树记录比中间值大的数,在每棵子树中不改变原数列中的顺序。 查找也类似线段树,规定查找区间,定义函数Find(code,l,r,kth,dep),code为当前查找到的节点值,l,r是区间左右界...

weixin_34137799的博客 138

【转】pku 2104 K-th Number 求某区间第k小数 归并排序+线段树

学习了网上最常用的解法——归并树。所谓的归并树并不是什么新奇的东西,顾名思义,其实就是归并排序+线段树。把归并排序过程中的各区间排序后的结果,用线段树储存起来!对题目给定的区间,只要在线段树中查找组成该区间的各个子区间即可!——logN关键在于求出某个值在线段树各个子区间中,小于该值的元素个数,还是用到了二分,继续是logN。由于要求的是该区间的第k小元素,可以对整个排序完的数组进行二分查找,...

weixin_33851429的博客 161

POJ 2104 K-th Number 归并树

题目:http://poj.org/problem?id=2104题意:求区间[l,r]内第k小的元素思路:用划分树,主席树,平方分割写过这道题,用归并树搞一下。归并树就是在建树的时候对数组进行归并排序,并保存每一步的归并结果,因此从树的底部到树的顶部就是归并排序的实现过程。然后二分枚举答案,对归并树进行查询,挺好理解的,就是效率不怎么高,这四种方法,按效率排序:划分树>主席树>归并树>平方分割#i

弱智就要多努力 480

POJ 2104 K-th Number(可持久化线段树-求第K大)

思路: 建立一个可持续化线段树,每次用一个新节点,接收其新的状态。先维护出一个从小到大,无重复的线段树。之后每次插入都是一个新的节点,(网上有图)。代码网上学的  #include #include #include #include using namespace std; const int maxn=100010; struct node { int lc,rc,l,r,num,

GameRoad 468

POJ2104 HDU2665 K-th Number【主席树】

K−th NumberK-th\ NumberK−th Number 之前在《挑战》上看到求区间第K大的办法是用分块做的,但是一直TLE过不了,看讨论里都是主席树,然后觉得很难就一直没学,今天终于花了一晚上搞懂了静态主席树是什么了,其实也不是特别难懂。 权值线段树和普通线段树差不多,权值线段树每个节点表示的是[L,R]之间各个数出现的次数。 主席树其实就是建立在权值线段树结构上...

qq_43710979的博客 264

【转】POJ 2104 K-th Number(2)

转自: http://huangwei.host7.meyu.net/?p=24 题意:给定序列,求出[s,t]区间内第k小的数字。 解法:线段树+归并排序+二分枚举 Whu回来后,开始好好看了下其余题目,感觉区间k大数应该有经典算法,问了下linle才知道poj上有原题,实在郁闷。比赛时也想到了线段树,但是没考虑到开另一个空间去保存排序后的值,所以一直没法打开思路。 (...

weixin_34315665的博客 112
上一篇: ioctl
下一篇: PKU 1651 Multiplication Puzzle
Mei废话
博客等级 码龄14年 5粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值