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 ...
随机推荐
- Lua系统库
Lua为了保证高度的可移植性,因此,它的标准库仅仅提供了非常少的功能,特别是和OS相关的库.但是Lua还提供了一些扩展库,比如Posix库等.对于文件操作而言,该库仅提供了os.rename函数和os ...
- Myeclipse使用DB Browser连接数据库错误:OPTION SQL_SELECT_LIMIT=DEFAULT
虽然使用Myeclipse,经过test driver可以使用, 但是不能够查询mysql数据库各个表的数据. 百度了下, 原来是驱动mysql的插件版本很低,重新下了个, 可以了. 下面是链接. ...
- javascript循环和数组的基础练习
九九乘法表 <script> //外层循环行数 for(var i=0; i<=9; i++){ //内曾循环控制每一行的列数 for(var j=0;j<=i; j++){ ...
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(四)
有网友问及权限的问题,其实我觉得没什么改进. 主目录下的web.config基本不用改.要说要改的也就只有数据库连接了. <authentication mode="None" ...
- InnoDB杂记
一.InnoDB写数据流程(猜想) myisam是将索引放入内存缓存(Key Cache,大小有key_buffer_size设置) innodb时间索引和数据文件都放入内存缓存池(Buffer Po ...
- vmware中两台虚拟机互相访问
hosts文件 简单说,就是本来访问某个机器是通过其ip,在hosts文件中给ip对应一个名字,那么就可以通过名字来替代ip去访问该机器了(名字显然比ip好记) 环境:宿主机win10系统,安装了 ...
- 设置一个顺手的Xcode
授权转载,作者:吴白(微博) 手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷.优秀的程序员总是这么一群人,他们不拘于现状,不固步自封,他们喜欢新奇的事,他们把自己发挥到极致. 指法攻略 ...
- python+selenium生成测试报告后自动发送邮件
标签(空格分隔): 自动化测试 运行自动化脚本后,会产生测试报告,而将测试报告自动发送给相关人员,能够让对方及时的了解测试情况,查看测试结果. 整个脚本包括三个部分: 生成测试报告 获取最新的测试报告 ...
- AsyncTask内的各个方法调用顺序
|- AsyncTask内的各个方法调用顺序:|- 首先,用户调用execute方法,启动AsyncTask .然后在execute方法中:|- 首先调用onPreExecute方法,执行初始化操作. ...
- DevExpress XtraPivotGrid 交叉表 重复显示问题
转自:http://www.cnblogs.com/xiayan/archive/2011/11/04/2236389.html 最近发现xtrareport 的PivotGrid实现交叉表非常的简单 ...