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;
}
Carsim和Matlab/Simulink联合仿真时Carsim匹配不到Matlab的解决方法       本人使用Carsim和Matlab/Simulink联合仿真做过用机器学习方法解决ACC和简单换道的仿真,曾将8.02 2016 2018三个版本Carsim反复安装N次,有相同方向的同学或安装过程遇到问题的同学可以加本人qq505625869一起交流经验心得。 一.前言       Carsim是一款很好的联合仿真软件,使用Carsim,可以避免搭建很多非常复杂的动力学模型 阅读详情

相关推荐

桌面云架构讲解(VDI、IDV、VOI/TCI、RDS)

什么是云桌面桌面云是虚拟化技术成熟后发展起来的一种应用,桌面云通常也称为云桌面、VDI等桌面云中的云一般指的是企业的数据中心,通过在数据中心的服务器上安装若干个虚拟机,这个虚拟机就是桌面;但是终端无法直接连接到这个虚拟机(云桌面),因此就需要通过技术将就虚拟机变为桌面云发放出来;发放出来之后只需要瘦客户端(PC、手机、瘦客户机等)连接到数据中心的云桌面服务器平台,最终就可以连接到桌面来进行使用云桌面的优势终端与数据信息分离,数据在后台集中处理和存储 ,数据实现统一管理。

m0_49864110的博客 3万+

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

生物信息学新手必看:MAFFT多序列比对从安装到实战(附参数优化技巧)

本文为生物信息学新手提供了MAFFT多序列比对工具的完整指南。从Linux环境下的安装部署,到核心算法策略(如FFT-NS-i、L-INS-i)的选择逻辑,再到空位罚分等关键参数的深度解析与优化技巧,手把手教你完成从原始序列到高质量比对结果的实战流程,为后续进化树构建等分析奠定坚实基础。

weixin_29230773的博客 485

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

瑞芯微RK3576开发板实战:6TOPS NPU如何加速你的AIoT项目(附性能测试)

本文以瑞芯微RK3576开发板为核心,深入探讨其6TOPS NPU在AIoT项目中的实战应用。通过详细的性能测试对比,展示了NPU如何将AI模型推理速度提升15倍以上,并大幅降低CPU负载。文章涵盖从环境搭建、模型转换优化到多屏异显与系统级调优的全流程,为开发者提供了将硬件算力转化为实际项目加速效果的完整指南。

oauth7security的博客 820

(project generation have a problem)STM32CubeMX生成工程一直报错项目生成有问题[玄学三步解]

解决办法 第一步,检查自己是不是真的配置的不对,JAVA安装没,pack路径设置的对不对,这里有一位前辈的博文写的非常好,附加链接https://blog.youkuaiyun.com/ybhuangfugui/article/details/52225736#commentBox 第二步,如果按照前辈的博文设置的都一模一样,还是不对,想我下图这样。 那你来对地方了 方法很简单,你把你生成工程文件的路径彻底的...

展桑博客-BenjieBlog 2922

POJ2828(线段树逆序插入)

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

CY05627的博客 346

高分SCI讨论部分必学AI写作套路!仅需五步结合GPT‑5辅助,让你的SCI论文更有说服力(附实用AI提示词)

对于很多写SCI论文的学术人来说,其实“讨论部分”才是最致命的,网上虽然有大量的写作技巧和模板提供参考,但往往让人眼花缭乱,还是不知道如何下手。即便是下手了,也很难兼顾学术性与可读性,实际上讨论部分的难点并不在于写,而在于你能研究结果说清楚。今天七哥教你借助GPT-5,用五步法结合精心设计的AI提示词,让你能在科学逻辑与语言表达上一次性解决“讨论部分”的结构、内容、润色和翻译问题,轻松写出符合高分SCI期刊要求的讨论段落。

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

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

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

dearmango 664

安装keil软件时安装不了芯片包怎么回事?芯片包安装路径放在Keill里的packs下面,弹框提示报错:Errors retumned from cpackget...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2207

C# 工业视觉性能极致优化:多线程推理池 + 对象复用 + 批量检测,速度提升 10 倍实战

set;} // 输入图像set;} // 异步返回结果set;} // 用于监控延迟性能优化不是魔法,而是对资源生命周期的精细管理和对硬件特性的充分利用。多线程池解决了 CPU/GPU 闲置问题。对象池解决了 GC 停顿问题。零拷贝解决了总线带宽瓶颈。严格的 Dispose解决了内存泄漏问题。这套架构已在多个高速锂电、3C 电子检测产线落地,轻松应对 200ms 甚至 50ms 的严苛节拍。记住,在工业领域,稳定性与速度同等重要。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 303

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

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

qq_25768269的博客 263

YOLOv8【第十二章:数据增强与数据工程篇·第10节】主动学习(Active Learning):如何挑选最有价值的样本进行标注!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 508

POJ 2828

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

小酷Miki的专栏 510

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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、付费专栏及课程。

余额充值