Hdu 5493 合肥网络赛 1010 Queue
2015-10-02 19:10
645 查看
在线求第k大,第一次用二分+树状数组写。。。比赛的时候分治啊,splay啊,主席树啊换来换去,然而以前为什么不知道可以这么写。。。
queue
#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=0; for (int i=x;i;i-=(i&-i)) tmp+=b[i]; return tmp; } void init(int n) { num=n; memset(b,0,sizeof(b)); } }s; int main() { int Case; scanf("%d",&Case); for (int o=1;o<=Case;o++) { int flag=1; scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d%d",&a[i].h,&a[i].x); sort(a+1,a+n+1); s.init(n); for (int i=1;i<=n;i++) s.add(i,1); for (int i=1;i<=n;i++) { int tmp=inf, k=a[i].x; if (1<=k+1 && k+1<=n-i+1) tmp=min(tmp,k+1); if (1<=n-i-k+1 && n-i-k+1<=n-i+1) tmp=min(tmp,n-i-k+1); if (tmp==inf) { flag=0; break; } int l=1,r=n, now; while (l<=r) { int mid=(l+r)>>1; if (s.ask(mid)>=tmp) { now=mid; r=mid-1; } else l=mid+1; } seq[now]=a[i].h; s.add(now,-1); } printf("Case #%d: ",o); if (!flag) printf("impossible\n"); else for (int i=1;i<=n;i++) if (i<n) printf("%d ",seq[i]); else printf("%d\n",seq[i]); } return 0; }
queue
相关文章推荐
- Hiho coder 1236 2015 北京网络赛 Score
- Coursera_Stanford_ML_ex3_多标度分类和神经网络初步 作业记录
- http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html
- deeplearning系列(二)自编码神经网络
- Ajax获取XmlHttpRequest对象的方法,兼容IE、火狐。用来与服务器进行通信。
- 《深入理解Linux网络技术内幕》阅读笔记(十)
- Java HTTP协议问题集锦
- 浏览器缓存浅析(二)
- 浏览器缓存浅析(一)
- 每个线程都有自己的信号屏蔽字,但是信号的处理时进程中所有线程共享的http://bbs.csdn.net/topics/350222437
- Tomcat配置虚拟目录、多域名、多个Http监听端口的方式
- Ad-hoc网络
- NFS网络文件系统安装
- (九) HTTP/2的错误码定义
- 黑马程序员---java基础---网络编程
- 网络文件下载(提供多种下载方式)
- exec函数族实例解析http://www.cnblogs.com/blankqdb/archive/2012/08/23/2652386.html
- fork()与vfork()的区别 http://blog.chinaunix.net/uid-18921523-id-265538.html
- inux 下system函数原型:http://blog.chinaunix.net/uid-29191363-id-4020441.html
- 解决Unable to find the wrapper "https"的二种方法