HDU - 5493 Queue 2015 ACM/ICPC Asia Regional Hefei Online(线段树)
按身高排序,每个人前面最高的人数有上限,如果超出上限说明impossible,
每次考虑最小的人,把他放在在当前的从左往右第k+1个空位
因为要求字典序最小,所以每次k和(上限-k)取min值。
没有修改操作,只有删除,可用线段树维护空位数量s,每次类似名次树判断一下第k个空位在哪颗子树上(原来这叫划分树
到达叶子返回位置编号并减少空位数量,push_up的时候维护一下空位数量。
#include<bits/stdc++.h>
using namespace std; const int maxn = 1e5+;
struct Nd
{
int h,k;
void IN(){ scanf("%d%d",&h,&k); }
bool operator < (const Nd& rh) const{
return h < rh.h;
}
}nd[maxn];
int N; bool chk()
{
sort(nd,nd+N);
for(int i = ,n = N-; i <= n; i++){
if(nd[i].k > n-i) return false;
nd[i].k = min(nd[i].k,n-i-nd[i].k);
}
return true;
} #define lo (o<<1)
#define ro (o<<1|1)
#define lsn L, M, lo
#define rsn M+1,R, ro
#define mid int M = (L+R)>>1;
#define para int L = 0, int R = N-1,int o = 1 int s[maxn<<];
void build(para)
{
s[o] = R-L+;
if(L==R) return;
mid
build(lsn);
build(rsn);
} int qk;
int qud(para)
{
if(L==R){ s[o]--; return L; }
mid
int re = ;
if(s[lo]>=qk) re = qud(lsn);
else { qk -= s[lo];re = qud(rsn); }
s[o] = s[lo] + s[ro];
return re;
} int ans[maxn]; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int T, ks = ; scanf("%d",&T);
while(T--){
scanf("%d",&N);
for(int i = ; i < N; i++) nd[i].IN();
printf("Case #%d:",++ks);
if(!chk()) { puts(" impossible"); continue; }
build();
for(int i = ; i < N; i++){
qk = nd[i].k+;
ans[qud()] = nd[i].h;
}
for(int i = ; i < N; i++){
printf(" %d",ans[i]);
}
puts("");
}
return ;
}
HDU - 5493 Queue 2015 ACM/ICPC Asia Regional Hefei Online(线段树)的更多相关文章
- 【线段树】HDU 5493 Queue (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意: N个人,每个人有一个唯一的高度h,还有一个排名r,表示它前面或后面比它高的人的个数 ...
- (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )
http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others) Memo ...
- (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)
http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others) ...
- 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...
- 【动态规划】HDU 5492 Find a path (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5492 题目大意: 一个N*M的矩阵,一个人从(1,1)走到(N,M),每次只能向下或向右走.求(N+ ...
- 【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5491 题目大意: 一个数D(0<=D<231),求比D大的第一个满足:二进制下1个个数在 ...
- (线段树 区间查询)The Water Problem -- hdu -- 5443 (2015 ACM/ICPC Asia Regional Changchun Online)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Time Limit: 1500/1000 MS (Java/ ...
- (字符串处理)Fang Fang -- hdu -- 5455 (2015 ACM/ICPC Asia Regional Shenyang Online)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=5455 Fang Fang Time Limit: 1500/1000 MS (Java/Others) ...
- hdu 5492 Find a path(dp+少量数学)2015 ACM/ICPC Asia Regional Hefei Online
题意: 给出一个n*m的地图,要求从左上角(0, 0)走到右下角(n-1, m-1). 地图中每个格子中有一个值.然后根据这些值求出一个最小值. 这个最小值要这么求—— 这是我们从起点走到终点的路径, ...
随机推荐
- 利用JS函数制作时钟运行程序
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 解决 Ajax 发送 post 请求出现 403 Forbidden 的三种方式
众所周知前端向后台发送 post 请求时,必须验证 csrf,否则会报错 403 Forbidden.使用 Django Form 表单可以直接在表单里面添加 {% csrf_token %} 即可, ...
- ue4 改c++类名
http://blog.csdn.net/chinahaerbin/article/details/50855135
- MySQL变更之:Online DDL 和 PT-OSC 该选谁?
参考: http://www.fromdual.ch/online-ddl_vs_pt-online-schema-change 在MySQL 5.6版本以前,最昂贵的数据库操作之一就是执行数据定义语 ...
- IT兄弟连 Java语法教程 Java语言入门 典面试题
1.请说明JVM.JRE和JDK是什么?它们有什么关系? JVM是Java虚拟机,Java Virtual Machine的缩写,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实 ...
- 通俗理解 React 高阶函数
定义:高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件. A higher-order component is a function that takes a componen ...
- Git 深度学习填坑之旅三(分支branch、远程操作)
0x01 分支branch依旧借用大表哥(@表元素)的图 很多时候,我们需要建立另一条分支来进行项目的独立开发,当完成后再跟主流回合进行合并这个时候就要启用分支branch功能 git branch ...
- elasticsearc 参考资料
_source 和store http://stackoverflow.com/questions/18833899/in-elasticsearch-what-happens-if-i-set-st ...
- Jquery属性操作(入门二)
********JQuery属性相关的操作******** 1.属性 属性(如果你的选择器选出了多个对象,那么默认只会返回出第一个属性). attr(属性名|属性值) - 一个参数是获取属性的值,两个 ...
- Vue实例生命周期+vueRoter
Vue实例生命周期 vue生命周期之beforeCreate 实例创建之前除标签外,所有的vue需要的数据,事件都不存在 vue生命周期之created 实例创建之后,data和事件已经被解析到,el ...