poj 2828

poj2828解题报告 poj2828解题报告,希望能帮到志同道合的算法爱好者 立即下载

从进阶指南看到这道题,其实跟奶牛那道题是一样的。网上好多人都用的是线段树,其实树状数组也是可以的。不过也侧面说明了线段树的可扩展性是强于树状数组的。

题意:
插队的问题,每个案例给出n,代表有n个插队的,每个给出p,v,意思是代号为v的人插在了第p个人的后面,问最后的队伍的排列?

题目中一开始整个队列是空的,也就是说如果输入i,j:代表代号为j的人插在了第i个人的后面,也就是说在他之前一定有了i个人,而他的位置是i+1。

Sample Input
4
0 77
1 51
1 33
2 69
4
0 20523
1 19243
1 3890
0 31492

Sample Output
77 33 69 51
31492 20523 3890 19243

思路:由后向前推到,每个遇到的都是确定位置的,最后的人选定的位置不会改变,因为是倒叙输入,在第i个人后插队,相当于他的前面一定要留下i个空格。

#include <cstdio>
#include <iostream>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <math.h>
#include <stack>

#define INF 0x3f3f3f3f
#define IMAX 2147483646
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int

using namespace std;

int maxn = 2000001;
int bits[2000011];
void add(int x, int v) {
	for (int i = x; i <= maxn; i += (i&-i))
		bits[i] += v;
}
int sum(int x) {//前x个数的和等于res,已知x求res
	int res = 0;
	for (int i = x; i; i -= (i&-i))
		res += bits[i];
	return res;
}
int find(int res) {//前x个数的和等于res,已知res求x
	int x = 0;
	for (int i = 19; i >= 0; --i) {
		if (x + (1 << i) > maxn || bits[x + (1 << i)] > res - 1)
			continue;
		x += (1 << i);
		res -= bits[x];
	}
	return x + 1;//找不到的时候会返回maxn
}

int n,k;
struct Node {
	int ins, val,pos;
}a[2000001];
bool cmp(const Node &p, const Node &q) {
	return p.pos < q.pos;
}

int main() {
	while (scanf("%d", &n) != EOF) {
		for (int i = 0; i < n; i++)
			scanf("%d%d", &a[i].ins, &a[i].val), a[i].ins++;
		//为何不需要memset?因为每个1最后都会被减掉
		for (int i = 1; i <= n; i++)
			add(i, 1);//a[i]值为1,表示这个位置是空位

		for (int i = n - 1; i >= 0; i--) {
			a[i].pos = find(a[i].ins);
			add(a[i].pos, -1);
		}
		sort(a, a + n,cmp);
		for (int i = 0; i < n; i++)
			printf("%d ", a[i].val);
		printf("\n");
	}

	return 0;
}
08-SD卡-TF卡硬件电路设计 SD卡-TF卡硬件电路设计 阅读详情

相关推荐

设置Solidworks导出文件的坐标系,stl坐标系平移

使用solidworks输出的模型坐标不再原点,怎么平行坐标系,这个方法很简单

weixin_45650767的博客 1万+

poj2828(线段树查找序列第k小的值)

题目链接:https://vjudge.net/problem/POJ-2828 题意:有n个人,依次给出这n个人进入队列时前面有多少人p[i],和它的权值v[i],求最终队列的权值序列。 思路:基本类似于poj2182,简化题意后即为求序列1..n中第k小的值的问题。读入数据量比较大,最好读入优化。我们从n..1逆序遍历,则可以确认最后一个人的最终位置为p[n]+1,然后从序列中删除p[n]...

weixin_34061042的博客 373

Qwen3.5在昇腾NPU上部署:vLLM-Ascend全链路实战

大语言模型推理框架(如vLLM)通过PagedAttention等内存调度机制,显著提升显存利用率与吞吐性能;国产AI芯片(如昇腾NPU)需配套专用算子优化与硬件感知调度才能释放真实算力。本文聚焦Qwen3.5大语言模型在昇腾平台的端到端部署,深入解析vLLM-Ascend如何协同CANN工具链、适配RoPE位置编码与Tokenizer映射、调优block_size与kv_cache_dtype等关键参数,实现单卡42 tokens/s高吞吐与112ms低延迟。内容覆盖环境验证、源码编译、模型权重转换、服务

weixin_34335458的博客 279

poj 2828(线段树)

//题目的关键就在于查询元素所在的位置 int query(int l,int r,int rt,int p) { if(l==r) { sum[rt]=0; return l; } int ret; int m=(l+r)>>1; if(p<sum[rt<<1]) //与2182 相类似,不过这里只有< 不是<=。

yun_weiguo的专栏 587

别再怕无霍尔BLDC了!手把手教你用反电动势过零检测搞定电机换向(附STM32代码片段)

本文详细介绍了无霍尔传感器BLDC电机的驱动方法,重点讲解反电动势过零检测技术及其在STM32上的实现。通过硬件电路设计、信号调理和软件算法优化,手把手教你完成电机换向控制,并提供实用的调试技巧和代码片段,帮助开发者快速掌握无霍尔BLDC驱动技术。

weixin_42522575的博客 492

21、时间触发以太网:通信、诊断、故障隔离与参数化详解

本文详细解析了时间触发以太网(TTEthernet)的核心机制,包括团检测算法、诊断服务、故障隔离策略、配置服务以及协议参数化等内容。TTEthernet是一种专为超高可靠性系统设计的网络技术,广泛应用于航空航天、工业自动化和汽车电子等领域。文章还探讨了其未来发展趋势,如技术创新与生态建设,为开发者、企业和研究机构提供了应用与发展的方向。

efc12345678的博客 110

POJ2828(线段树逆序插入)

题意: 插队的问题,每个样例给出n,代表有n个插队的,每个给出p,v,意思是代号为v的人插在了第p个人的后面,问最后的队伍的排列? 思路: 最后一个人的位置一定是确定的。依次倒着插入。 #include <cstdio> #include <cstring> #include <queue> #include <algorithm> #pragma ...

CY05627的博客 346

文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)

本文将手把手教会你使用jieba库进行中文分词和去除停用词,这是学会文本分析的必经之路!

m0_64336780的博客 4万+

poj 2828 树状数组or线段树(还原排队的人的序列)

题意:人们一个一个的来排队并插队,按人到来的顺序给出每个人插队的位置(插在第几个人后面),并告知每个人的id号,输出最终队伍的情况。 思路:按照hint给的思路显然是n2复杂度,对于200000个点来说大了点。 1、按照与2182同样的思路可以用树状数组来做。只不过这次二分是求第i个人应该最终排在哪个位置。 2、线段树也能做,记录区间目前还剩的空位数量,每一次插入的时候,如果该节点左儿子的空

dearmango 664

【QT开发教程】使用Qt进行NFC编程

近场通信(NFC,Near Field Communication)技术广泛应用于现代设备中,例如智能手机、支付终端和门禁系统。Qt提供了一套完整的NFC模块,使开发者可以轻松地在应用程序中实现NFC功能。本文将介绍如何在Qt中进行NFC编程,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 1469

ESP32-C3入门教程 问题篇⑳——subprocess.CalledProcessError: Command ‘[‘D:\\.espressif\\python_env\\idf5.4_py3.

ESP32-C3入门教程 问题篇⑳——subprocess.CalledProcessError: Command '['D:\\.espressif\\python_env\\idf5.4_py3.

772

【poj2182】【poj2828】树状数组/线段树经典模型:逆序查找-空位插入法

【poj2182】【poj2828】树状数组/线段树经典模型:逆序查找-空位插入法 poj2182题意:有一个1~n的排列,现在给定每个人前面有多少个人的编号比他大,求这个排列是什么。n&lt;=8000 poj2182题解: 逆序做,可以确定二分最后一个是什么,然后删除这个数。树状数组维护每个数前面有多少个数比它小。 poj2828题...

qq_25768269的博客 263

openGauss学习笔记-280 openGauss性能调优-实际调优案例09-修改启动参数解决TPCC大幅度波动

openGauss学习笔记-280 openGauss性能调优-实际调优案例09-修改启动参数解决TPCC大幅度波动280.1 现象描述280.2 优化分析 openGauss学习笔记-280 ope

超哥的博客 309

POJ 2828

POJ 2828 (单点修改 区间查询) 题目链接:POJ 2828 题意: n个人,每个人不断地插入到队伍中。 输入a b表示号码为b的插入到第a个后面。 分析: 需要逆序处理插入队伍的信息。每个区间记录着每个区间能存放的人的数量。逆序插入时,若左子树还能放人,则放到左子树那,否则放到 右子树那。当前区间减1,并且将val的值放入到最终的答案中。 逆序处理的原因:如下面的

小酷Miki的专栏 510

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

poj2828

POJ2828 Buy Tickets http://poj.org/problem?id=2828 Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue… The Lunar...

北区以北的博客 267

ssm框架搭建

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

POJ 2828 BIT

题意 传送门 POJ 2828 题解 最终队列里有 NNN 个人,考虑倒着插入序列,当前处理的人的位置,必然是当前序列的第 posi+1pos_{i}+1posi​+1 个位置;不断求出当前处理人的位置(求解位置一般要 O(logn)O(logn)O(logn) 二分位置再 O(logn) 求前缀和;这里用按区间长度降序枚举的方法 O(logn)O(logn)O(logn) 求前缀和为 xxx 时的位置),将其删除即可。 #include <cstdio> #include <cstrin

neweryyy的博客 235

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

poj2828-Buy Tickets

题目链接http://vjudge.net/problem/POJ-2828 解题思路 好吧。。。感觉跟Lost Cow那道题好像。。。 然后稀里糊涂地过了。。。3500+ms(时限4s(⊙﹏⊙)b) 线段树。。。单点 代码 #include<stdio.h> #include<string.h> #define MAX_SIZE...

anyi4391的博客 172

POJ2828

一道线段树的好题..

Dizzz的博客 756

poj2828Buy Tickets

链接:http://poj.org/problem?id=2828 题意:给定n个人的信息依次插入队列,pos[i]第i个人插入到pos[i]的位置,val[i]为第i个人的价值。输出插入所有人之后的价值序列。 分析:因为是像插队一样插入队列中,那么越后面的人优先级越高,那么我们就倒着从最后一个人插入,这样的话我们插入位置后就不需要变动了,每次只要找当前这个人插入的位置为第pos[i]个空位即

Fsss 474

poj2828 线段树

    poj2828      对方法不理解透彻!照搬是没有用的,要彻底理解。一些特殊情况没出什么问题。但一当到大量数据的测试时,WA了!哎,幸亏慢慢找还能找出来,不然我今晚就耗在这睡觉都睡不好了。嘿嘿!     好了,最近这段时间对并查集,线段树,树状数组的学习就先告一段落了。总的来说这段时间的成效还是不错的哦。明天开始我要进入关于搜索的学习,加油吧,孩子。继续学习,继续刷分去吧!呼呼~ ...

weixin_33800593的博客 255

poj 2828 Buy Tickets

题目链接:http://poj.org/problem?id=2828 这个题目主要是考虑从后往前填,这样就方便操作了。 其中peo[rt]表示以rt为根的左右子树中总共存在的空位数,其实每个元素的pos[i]就可以表示前面有pos[i]个空位,这样就可以进行插入了。 代码

凌风 1236

POJ2828 插队

POJ2828 Buy Tickets 题意:人们一个一个的来排队并插队,按人到来的顺序给出每个人插队的位置(插在第几个人后面),并告知每个人的id号,输出最终队伍的情况 分析:从最后来的一个人开始向来得更早的人遍历,这样pos(插在第几个人后面)的意义就变成了,前面有多少个空位。线段树上每个节点中存储的是当前时刻,该区间有多少空位。具体分析了一下第一个样例,如图 #include<cstdi

Daniel 447

Buy Tickets POJ - 2828

Buy Tickets POJ - 2828 Railway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue… The Lunar New Year was approaching, but unluckily th...

Willen_的博客 387

Poj2828 Buy Tickets(逆序思维+线段树)

POJ2828 题意 nnn个人,给你nnn次操作 第iii次操作表示编号pospospos的人插队到队伍第xxx个人后面了 问最后队伍的编号顺序 乍一看以为是链表裸题,但是发现查找第xxx个人会非常慢 结果题解十分巧妙 倒序考虑,因为最后面插入的人的位置是永远固定的 那么倒序考虑插入到第xxx个人后面说明前面要留刚好xxx个空位 这样我们把空位的值设为111,有人设置为000 那么倒序每次查找第x+1x+1x+1个空位就好了嘛~ 这样直接上线段树也很简单了(权值线段树) 如果去掉头文件等只有20行 #i

jziwjxjd的博客 734

【POJ 2828】Buy Tickets

【题目链接】 http://poj.org/problem?id=2828 【算法】 离线用线段树维护序列即可 【代码】 #include <algorithm> #include <bitset> #include <cctype> #include...

106
上一篇: poj 1417
下一篇: poj 3667
FawkesLi
博客等级 码龄8年 21粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值