很容易想到一种动态的做法:平衡树……

或者是二分+树状数组

但,前者编程复杂度较大,而且据说会被卡(没试过);后者理论上超时(据说可以擦边过?);

所以要尝试新的算法;

倒着考虑,显然最后一个对象的位置是最容易确定,顺带着,容易发现,

在第i个人后插入,就是在当前队列中前面有i个空位的空位置;

于是还是可以用平衡数……

当然更简单快捷的方法是线段树,每个节点表示这个区间还有的空位数;

然后类比平衡树的查找k大,很快就能写成

 var tree:array[..] of longint;
    p,a,w:array[..] of longint;
    n,i:longint; procedure build(i,l,r:longint);
  var m:longint;
  begin
    tree[i]:=r-l+;
    m:=(l+r) shr ;
    if l<>r then
    begin
      build(i*,l,m);
      build(i*+,m+,r);
    end;
  end; function ask(i,l,r,k:longint):longint;
  var m:longint;
  begin
    if l=r then
    begin
      tree[i]:=;
      exit(l);
    end;
    m:=(l+r) shr ;
    if tree[i*]>k then
    begin
      dec(tree[i*]);      //在查找的过程中顺便把区间空位数更新
      exit(ask(i*,l,m,k));
    end
    else begin
      dec(tree[i*+]);
      exit(ask(i*+,m+,r,k-tree[i*]));   //有没有觉得很平衡树找区间k值神似
    end;
  end; begin
  while not eoln do
  begin
    readln(n);
    fillchar(tree,sizeof(tree),);
    build(,,n);
    for i:= to n do
      readln(p[i],a[i]);
    for i:=n downto do
      w[i]:=ask(,,n,p[i]);     //w代表每个点的位置
    for i:= to n do
      p[w[i]]:=a[i];
    for i:= to n do
    begin
      write(p[i]);
      if i<>n then write(' '); //注意别PE了
    end;
    writeln;
  end;
end.

poj2828的更多相关文章

  1. 【POJ2828】Buy Tickets(线段树)

    题意:有一个输入序列,每次操作要把b[i]插入到第a[i]个,在第a[i]个后面的要后移,问最后序列. n<=200000 思路:顺序来只能用splay维护 考虑倒序,对于插入到第K个位置,在线 ...

  2. 【poj2828】Buy Tickets 线段树 插队问题

    [poj2828]Buy Tickets Description Railway tickets were difficult to buy around the Lunar New Year in ...

  3. poj2828 Buy ticket

    Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...

  4. poj2828 BuyTickets 线段树

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 17326   Accepted: 8601 Desc ...

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

    题目链接:https://vjudge.net/problem/POJ-2828 题意:有n个人,依次给出这n个人进入队列时前面有多少人p[i],和它的权值v[i],求最终队列的权值序列. 思路:基本 ...

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

    poj2182题意:有一个1~n的排列,现在给定每个人前面有多少个人的编号比他大,求这个排列是什么.n<=8000 poj2182题解: 逆序做,可以确定二分最后一个是什么,然后删除这个数.树状 ...

  7. POJ-2828 Buy Tickets---线段树+逆序

    题目链接: https://cn.vjudge.net/problem/POJ-2828 题目大意: 插队的问题,每个案例给出n,代表有n个插队的,每个给出p,v,意思是代号为v的人插在了第p个人的后 ...

  8. [POJ2828] Buy Tickets(待续)

    [POJ2828] Buy Tickets(待续) 题目大意:多组测试,每组给出\(n\)条信息\((a,b)\),表示\(b\)前面有\(a\)个人,顺序靠后的信息优先级高 Solution.1 由 ...

  9. POJ2828 Buy Tickets[树状数组第k小值 倒序]

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 19012   Accepted: 9442 Desc ...

  10. 【poj2828】Buy Tickets

    Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...

随机推荐

  1. LAMP(Ubuntu+apache+mysql+php)+Zend Studio 新手の PHP的开发环境搭建

    因为工作需要,就从c#转型过来研究PHP.可是没想到从一开始就遇上了问题,环境配置方面的问题足足令我头疼了两天.因为博主本人对于linux的接触非常少,所以在解决这个问题的时候也学到了不少东西, 非常 ...

  2. Spark Streaming揭秘 Day33 checkpoint的使用

    Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...

  3. Spark Streaming揭秘 Day4-事务一致性(Exactly one)

    Spark Streaming揭秘 Day4 事务一致性Exactly one 引子 对于业务处理系统,事务的一致性非常的关键,事务一致性(Exactly one),简单来说,就是输入数据一定会被处理 ...

  4. 关于hadoop2.4.2版本学习时遇到的问题

    问题一:namenode启动失败 描述:在初始化后hadoop后,发现datanode启动失败,namenode则可以正常启动,如果把用户换成root权限,再次启动时,则namenode和datano ...

  5. AWS--EC2基本概念

    原文:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html EC2:Elastic Compute Cloud 特性包括: ...

  6. Lua基础之table详解

    概要:1.table特性:2.table的构造:3.table常用函数:4.table遍历:5.table面向对象 原文地址:http://blog.csdn.net/dingkun520wy/art ...

  7. 【BZOJ 1010】 [HNOI2008]玩具装箱toy

    Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...

  8. 一个有意思的js实例,你会吗??[原创]

    首先,看看下面一个js例子,你觉得会输出什么呢? function fn(a){ a(); function a(){ console.log(2); } var a = function(){ co ...

  9. Java-使用js进行编码,后台解码。

    1:使用js编码 var value=window.encodeURI(window.encodeURI(strValue)); 2:Java类中解码. String str=URLDecoder.d ...

  10. VS asp.net 连接64位oracle 11g

    vs2010 vs2013 vs2015 无法连接oracle 11g 64bit 尝试加载 Oracle 客户端库时引发 BadImageFormatException......... A.安装o ...