Hdu 5493 合肥网络赛 1010 Queue
在线求第k大,第一次用二分+树状数组写。。。比赛的时候分治啊,splay啊,主席树啊换来换去,然而以前为什么不知道可以这么写。。。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
#include <set>
#define inf 1000000007
#define maxn 100002 using namespace std; int n;
int seq[maxn]; struct peo
{
int h,x;
friend bool operator <(peo a, peo b)
{
return a.h<b.h;
}
}a[maxn]; struct bit
{
int b[maxn];
int num;
void add(int x,int z)
{
for (int i=x;i<=num;i+=(i&-i)) b[i]+=z;
}
int ask(int x)
{
int tmp=;
for (int i=x;i;i-=(i&-i)) tmp+=b[i];
return tmp;
}
void init(int n)
{
num=n;
memset(b,,sizeof(b));
}
}s; int main()
{
int Case;
scanf("%d",&Case);
for (int o=;o<=Case;o++)
{
int flag=;
scanf("%d",&n);
for (int i=;i<=n;i++)
scanf("%d%d",&a[i].h,&a[i].x);
sort(a+,a+n+);
s.init(n);
for (int i=;i<=n;i++) s.add(i,); for (int i=;i<=n;i++)
{
int tmp=inf, k=a[i].x;
if (<=k+ && k+<=n-i+) tmp=min(tmp,k+);
if (<=n-i-k+ && n-i-k+<=n-i+) tmp=min(tmp,n-i-k+);
if (tmp==inf)
{
flag=;
break;
}
int l=,r=n, now;
while (l<=r)
{
int mid=(l+r)>>;
if (s.ask(mid)>=tmp)
{
now=mid;
r=mid-;
}
else
l=mid+;
}
seq[now]=a[i].h;
s.add(now,-);
}
printf("Case #%d: ",o);
if (!flag) printf("impossible\n");
else
for (int i=;i<=n;i++)
if (i<n) printf("%d ",seq[i]);
else printf("%d\n",seq[i]);
}
return ;
}
queue
Hdu 5493 合肥网络赛 1010 Queue的更多相关文章
- Hdu 5489 合肥网络赛 1009 Removed Interval
跳跃式LIS(nlogn),在普通的转移基础上增加一种可以跨越一段距离的转移,用一颗新的树状数组维护,同时,我们还要维护跨越完一次后面的转移,所以我用了3颗树状数组.. 比赛的时候一句话位置写错了,然 ...
- HDU 4768 Flyer (2013长春网络赛1010题,二分)
Flyer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 4747 Mex (2013杭州网络赛1010题,线段树)
Mex Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
- 2015合肥网络赛 HDU 5489 Removed Interval LIS+线段树(树状数组)
HDU 5489 Removed Interval 题意: 求序列中切掉连续的L长度后的最长上升序列 思路: 从前到后求一遍LIS,从后往前求一遍LDS,然后枚举切开的位置i,用线段树维护区间最大值, ...
- 2015合肥网络赛 HDU 5492 Find a path 动归
HDU 5492 Find a path 题意:给你一个矩阵求一个路径使得 最小. 思路: 方法一:数据特别小,直接枚举权值和(n + m - 1) * aver,更新答案. 方法二:用f[i][j] ...
- HDU 4737 A Bit Fun 2013成都 网络赛 1010
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4737 题目大意:给定一系列数,F(i,j)表示对从ai到aj连续求或运算,(i<=j)求F(i, ...
- 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...
- HDU 5876 大连网络赛 Sparse Graph
Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) T ...
- 2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 1010
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #inclu ...
随机推荐
- workspace路径有中文情况会报java.net.MalformedURLException: unknown protocol: d错误
原因及描述:java读取xml文件时如果出现中文字符就会出现这类错误 解决方法: 1.将中文路径改为英文路径 2.读取file时"file:///d:/" 而不是"d ...
- Android-adb指令
adb概念: adb的全称为Android Debug Bridge(调试桥):通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序.当我们运行Eclipse时ADB进程 ...
- 【iCore3应用开发平台】发布 iCore3 应用开发平台PID控制代码
说明:1.本代码包包含FPGA和STM32F407两部分内容2.FPGA工程为出厂代码FPGA工程,版本为REV43.STM32F407为只含PID控制的ARM工程4.在使用风扇过程中,请勿将手伸入扇 ...
- crontab执行时间和系统时间不一致
最近发现一个非常奇怪的问题,症状如下: crontab 定时任务 配置时间 是 10 5 * * * (每日凌晨5点10分执行) 运行脚本时间却是 18:10左右 Dec 24 05:10:01 ht ...
- 学习laravel遇到的一些错误
Call to undefined method Illuminate\Foundation\Application::bindShared() 错误代码 Call to undefined meth ...
- 使用openvswitch 和dnsmasq来实现虚拟机网络隔离
openvswicth : 开源的网络虚拟化软件,可以划分vlan隔离虚拟机,做流量控制 dnsmasq:小心的dns,dhcp服务器 安装openvswicth wget http://openv ...
- docker好文收藏
深入浅出Docker(一):Docker核心技术预览 2. 核心技术预览 Docker核心是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观.我们从虚拟化方法的四个方面:隔离性.可配额/可度 ...
- Trace-语句启动Profiler中暂停的跟踪会出现什么状况
2016-09-08 22:09 整理,未发布Profiler创建客户端跟踪.常规页不保存文件.不勾选服务器处理跟踪数据:事件选择RPC:Completed和SQL:BatchCompleted,列筛 ...
- 使用git版本控制器C#工程,git托管到GitHub和visual studio on line
类比TFS, 托管到了VS online,为私有.GitHub上托管的代码为开源. 新建工程选择版本控制器"Git" VS online: 本地: GitHub,下载github ...
- (地址)Spring Data Solr
http://docs.spring.io/spring-data/solr/docs/1.3.0.RELEASE/reference/html/