BZOJ 3401: [Usaco2009 Mar]Look Up 仰望(离线+平衡树)
刷银组刷得好开心= =
离线按权值排序,从大到小插入二叉树,查找树中比这个数大的
CODE:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define maxn 100010
struct node{
int ch[2],x,r;
}t[maxn];
int cmp(int x,int y){
if (t[x].x>y) return 0;
if (t[x].x==y) return -1;
return 1;
}
int rotate(int &x,int d){
int u=t[x].ch[d];
t[x].ch[d]=t[u].ch[d^1];
t[u].ch[d^1]=x;
x=u;
return 0;
}
int l;
int insert(int &x,int y){
if (x==0) {x=++l;t[x]=(node){{0,0},y,rand()};return 0;}
int d=cmp(x,y);
insert(t[x].ch[d],y);
if (t[t[x].ch[d]].r>t[x].r) rotate(x,d);
return 0;
}
int an;
int maxnum(int x,int y){
if (x==0) return 0;
int d=cmp(x,y);
if (d==0) an=t[x].x;
maxnum(t[x].ch[d],y);
return 0;
}
int id[maxn],ans[maxn],a[maxn];
bool cmp1(int x,int y){
if (a[x]==a[y]) return x<y;
return a[x]>a[y];
}
int main(){
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d",a+i);
for (int i=1;i<=n;i++) id[i]=i;
sort(id+1,id+1+n,cmp1);
int root=0;
for (int i=1;i<=n;i++) {
an=0;
maxnum(root,id[i]);
ans[id[i]]=an;
insert(root,id[i]);
}
for (int i=1;i<=n;i++) printf("%d\n",ans[i]);
return 0;
}
BZOJ 3401: [Usaco2009 Mar]Look Up 仰望(离线+平衡树)的更多相关文章
- BZOJ 3401: [Usaco2009 Mar]Look Up 仰望( 单调栈 )
n <= 105 , 其实是10 ^ 5 ....坑...我一开始写了个模拟结果就 RE 了.. 发现这个后写了个单调栈就 A 了... ---------------------------- ...
- bzoj 3401: [Usaco2009 Mar]Look Up 仰望【单调栈】
用单调递减的栈从后往前扫一遍即可 #include<iostream> #include<cstdio> using namespace std; const int N=10 ...
- 3401: [Usaco2009 Mar]Look Up 仰望
3401: [Usaco2009 Mar]Look Up 仰望 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 136 Solved: 81[Submi ...
- 【BZOJ】3401: [Usaco2009 Mar]Look Up 仰望(单调栈)
http://www.lydsy.com/JudgeOnline/problem.php?id=3401 还能更裸一些吗.. 维护一个递减的单调栈 #include <cstdio> #i ...
- BZOJ3401: [Usaco2009 Mar]Look Up 仰望
3401: [Usaco2009 Mar]Look Up 仰望 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 87 Solved: 58[Submit ...
- DP经典 BZOJ 1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
BZOJ 1584: [Usaco2009 Mar]Cleaning Up 打扫卫生 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 419 Solve ...
- bzoj 3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MB Description 约翰用沙子建了一座城堡.正 ...
- BZOJ 3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 动态规划
3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=34 ...
- bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害
1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 Description Farmer John的农场里有P个牧场,有C条无向道路连接着他们,第i条道路连接着 ...
随机推荐
- myeclipse的常用快捷键
创建一个类 Alt+Shift+N,C,输入Demo,回车 创建类属性 按3次下方向键,回车,输入String name;,回车 创建构造器 Alt+Shift+S,O,回车 创建getter/set ...
- Asp.Net集群中Session共享
今天遇到了这个问题,于是研究了一下.要解决这个问题,首先就要明白一些Session的机理.Session在服务器是以散列表形式存在的,我们都知道Session是会话级的,每个用户访问都会生成一个Ses ...
- github上一些酷炫效果
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...
- CART分类与回归树 学习笔记
CART:Classification and regression tree,分类与回归树.(是二叉树) CART是决策树的一种,主要由特征选择,树的生成和剪枝三部分组成.它主要用来处理分类和回归问 ...
- ajax请求获取到数据,但是仍然不能触发success方法
这个问题消耗了我的很多时间. 原来是因为.php文件中的 echo echo json_encode($k); 后面少加了个exit; 因为echo echo json_encode($k); 之后 ...
- iOS 倒出spa文件 打包
1. 修改Build Settings 修改 Code Signing: codesign failded 意思是签名错误,看看是否xcode -perferences是否没有登录,还有就是钥匙串密码 ...
- php循环生成的表单如何获得其各项值案例
思路:输入框和按钮是用for循环生成的,不但要获取输入框里的各项值,并且要获取点击按钮的值,要知道是那个按钮被点击了,这里以生成5个为例.如图: 这是提交页面,点击的是“小米”. 这是显示结果,测试显 ...
- systemd-journal[825]: Forwarding to syslog missed 99 messages
In this particular case we have a DNS server running Bind which is logging all DNS queries. 7124 mes ...
- HDU -2100-Lovekey
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2100 这题开始一直想着先把26进制转换成10进制,在转换成26进制,又200个字符因而行不通, 直接卡 ...
- 在DataTable数据类型最后增加一列,列名为“Column”,内容都为“AAA”
DataTable dt = new DataTable(); dt.Columns.Add("Column", typeof(string)); foreach (DataRow ...