题目大意:

一些人,每个人的身高都是不一样的

然后再给你一个k,表示这个人的左边或者右边,有k个人比他高

然后让你构造一个满足条件且字典序最小的序列

思路:

按照权值排序 这样每次加进去后只有后面的才会比它大

加的时候需要在前面或后面留出k个空间

选出位置靠前的那个加入使字典序最小

如果两个位置都被占即无解

然后用线段树维护一下区间和即可

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define inf 2139062143
#define ll long long
#define MAXN 100100
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,sum[MAXN<<],ans[MAXN];
struct data
{
int val,k;
bool operator < (const data &a) const
{
return val<a.val;
}
}g[MAXN];
void build(int k,int l,int r)
{
sum[k]=r-l+;
if(l==r) return ;
int mid=(l+r)>>;
build(k<<,l,mid);build(k<<|,mid+,r);
}
int mdf(int k,int x,int l,int r)
{
sum[k]--;
if(l==r)
if(sum[k]+) return l;
else return ;
int mid=(l+r)>>;
if(x<=sum[k<<]) return mdf(k<<,x,l,mid);
else return mdf(k<<|,x-sum[k<<],mid+,r);
}
int main()
{
int T=read();
for(int t=;t<=T;t++)
{
printf("Case #%d: ",t);
n=read();
for(int i=;i<=n;i++) g[i].val=read(),g[i].k=read()+;
sort(g+,g+n+);
build(,,n);
for(int i=,r=n,x,y;i<=n;i++,r--)
{
if((x=mdf(,min(g[i].k,r-g[i].k+),,n))&&min(g[i].k,r-g[i].k+)>=&&min(g[i].k,r-g[i].k+)<=r) ans[x]=g[i].val;
else if(y=mdf(,max(g[i].k,r-g[i].k+),,n)&&min(g[i].k,r-g[i].k+)>=&&min(g[i].k,r-g[i].k+)<=r) ans[y]=g[i].val;
else {puts("impossible");goto ed;}
}
for(int i=;i<n;i++) printf("%d ",ans[i]);printf("%d\n",ans[n]);
ed:;
}
}

hdu 4777 Queue的更多相关文章

  1. hdu 4777 树状数组+合数分解

    Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  2. HDU 4777 Rabbit Kingdom(树状数组)

    HDU 4777 Rabbit Kingdom 题目链接 题意:给定一些序列.每次询问一个区间,求出这个区间和其它数字都互质的数的个数 #include <cstdio> #include ...

  3. HDU 5493 Queue 树状数组

    Queue Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5493 Des ...

  4. 【线段树】HDU 5493 Queue (2015 ACM/ICPC Asia Regional Hefei Online)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意: N个人,每个人有一个唯一的高度h,还有一个排名r,表示它前面或后面比它高的人的个数 ...

  5. P - 区间与其他数互质数的个数 HDU - 4777

    Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. HDU 4777 Rabbit Kingdom (2013杭州赛区1008题,预处理,树状数组)

    Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  7. HDU 4441 Queue Sequence(splay)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4441 题意:一个数列,三种操作:(1)插入:找到没在当前数列中的最小的正整数i,将其插在位置p之后,并 ...

  8. HDU 4441 Queue Sequence

    http://acm.hdu.edu.cn/showproblem.php?pid=4441 题意:对于一个序列,每次有三种操作   insert pos  表示在pos插入一个数,这个数是最小的正数 ...

  9. HDU 4777 Rabbit Kingdom 树状数组

    分析:找到每一个点的左边离他最近的不互质数,记录下标(L数组),右边一样如此(R数组),预处理 这个过程需要分解质因数O(n*sqrt(n)) 然后离线,按照区间右端点排序 然后扫一遍,对于当前拍好顺 ...

随机推荐

  1. 初识 Bootstrap

    Bootstrap 概述 Bootstrap 是一个前端框架,使用它可以快速开发响应式页面,还能专门针对 PC 端或移动端快速开发,大大提高了开发效率. Bootstrap 是最受欢迎的 HTML.C ...

  2. http请求体笔记

    一.请求体数据格式 1.application/json:json格式 2.text/plain:纯文本格式 3.application/x-www-form-urlencoded:url编码后产生的 ...

  3. buf.equals()

    buf.equals(otherBuffer) otherBuffer {Buffer} 返回:{Boolean} 返回一个 boolean 标识,无论 this 和 otherBuffer 是否具有 ...

  4. Amoeba新版本MYSQL读写分离配置

    标签:mysql 数据库 读写分离 休闲 amoeba 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://skyson.blog.5 ...

  5. fd最大值和限制

    fd的数量决定了fd的最大值 在Linux下,系统全部能够打开的fd总数为: /proc/sys/fs/file-max,取决于内存 The file-max file /proc/sys/fs/fi ...

  6. codeforces 88E Interesting Game

    题目大意: 两个好朋友再将一堆物品分堆,每次都将一堆物品分成数量连续的至少两个堆,直到一个人不能分堆为输 第一次做博弈问题,看了百度文库的http://wenku.baidu.com/link?url ...

  7. android开发里跳过的坑-android studio 错误 Could not find junit:junit:4.12

    在导入一个新项目时,出现错误Could not find junit:junit:4.12,网上大多是说缺少junit的jar包,但我查看了安装目录下是有jnuit包的,并且新建的项目都没有问题.几经 ...

  8. 使用谷歌Z生成条形码以及二维码

    下载地址:http://zxingnet.codeplex.com/ zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便. 首先下载二进制dll文件,引入工程: using Sy ...

  9. 【NOIP2015】运输计划(树上差分,二分答案)

    题意:一棵有边权的树上有m条路径,要求选择一条边使其边权变为0,使得最大路径长度最小 n,m<=300000 思路:直接求最优方案不可做,但检验对于某一个ans是否能有方案是可行的 取出所有总长 ...

  10. 洛谷——P1062 数列

    洛谷——P1062 数列 题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,1 ...