博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2828 Buy Tickets
阅读量:5983 次
发布时间:2019-06-20

本文共 1141 字,大约阅读时间需要 3 分钟。

POJ_2828

    这个题目和POJ_2182很像,我们可以从后往前依次查询,排在p的右边就说明自己是排在第p+1位的,因此,我们可以维护一个线段树,节点值表示当前区间内还有多少个位置,寻找到当前第p+1个位置的所在地时,就把value存进去,然后把这个位置删除,即自底向上更新一遍节点值即可。

#include
#include
#define MAXD 200010 int tree[4 * MAXD], q[MAXD], a[MAXD], b[MAXD], N, M; void init() {
int i, j; for(M = 1; M < N + 2; M <<= 1); memset(tree, 0, sizeof(tree)); for(i = 0, j = M + 1; i < N; i ++, j ++) tree[j] = 1; for(i = M - 1; i; i --) tree[i] = tree[2 * i] + tree[2 * i ^ 1]; for(i = 0; i < N; i ++) scanf("%d%d", &a[i], &b[i]); } void solve() {
int i, j, k; for(i = N - 1; i >= 0; i --) {
k = a[i] + 1; for(j = 1; j < M;) {
if(tree[2 * j] >= k) j <<= 1; else {
k -= tree[2 * j]; j = (j << 1) + 1; } } q[j - M - 1] = b[i]; for(; j ^ 1; j >>= 1) tree[j] --; } for(i = 0; i < N; i ++) {
if(i) printf(" "); printf("%d", q[i]); } printf("\n"); } int main() {
while(scanf("%d", &N) == 1) {
init(); solve(); } return 0; }

转载地址:http://cpeox.baihongyu.com/

你可能感兴趣的文章
MySQL5.6中新增特性、不推荐使用的功能以及废弃的功能
查看>>
OnePlus安装Kali-NetHunter
查看>>
JavaScript:Array 对象
查看>>
PDFCreator:一款免费,开源的PDF(Tiff,pcx,png,jpeg,bmp,PS,EPS)打印机(VB,GPL),并提供了COM接口,方便使用各种编程语言调用...
查看>>
Note 1773479 - SYB: Displaying multiple triggers per object
查看>>
联手云计算核心技术开发,BoCloud与中科院软件所战略合作
查看>>
2017年背景下的SSD选购技巧有哪些变化?
查看>>
2016年的数据存储和管理的成本将何去何从?
查看>>
Airpods 并非无用,而是苹果借助语音交互布局物联网的新“棋子”
查看>>
项目总结:数据迁移测试
查看>>
SQL中存储过程的创建和使用
查看>>
荷兰政府:保证不强制在任何产品中留有后门
查看>>
编写单元测试的10条理由
查看>>
LINUX-SAMBA服务配置
查看>>
图像处理------光束效果
查看>>
剑指offer 面试题6:重建二叉树
查看>>
基于ES5`defineProperty` 实现简单的 Mvvm框架
查看>>
关于UI设计的一些工作了解
查看>>
spring cloud构建互联网分布式微服务云平台-Spring Cloud Config环境库
查看>>
java B2B2C Springcloud仿淘宝电子商城系统-Zipkin服务端配置
查看>>