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条道路连接着 ...
随机推荐
- java实现——006重建二叉树
public class T006 { public static void main(String[] args){ int pre[] = {1,2,4,7,3,5,6,8}; int in[] ...
- arcgis 瓦片图加载规则(转载)
arcgis 瓦片图加载规则 最近需要做地图离线的功能,要能下载指定区域的瓦片图,我们都知道如何加载谷歌和天地图的加载规则,但是网上貌似没有找到如何加载arcgis自己发布的瓦片图规则,好不容易找到一 ...
- Notification的功能与用法
Notification是显示在手机状态的通知——手机状态栏位于手机屏幕的最上方,那里一般显示了手机当前的网络状态.时间等.Notification所代表的是一种具有全局效果的通知,程序一般通过Not ...
- Update关联查询不走索引,效率低下
优化一个sql,就是有A,B两个表,要利用b表的字段更新a表对应的字段.形如 Sql代码 update A set A.a=(select B.b from B where A.id=B.id); 原 ...
- return_url和notify_url的区别
页面跳转同步通知页面特性(return_url特性) (1) 买家在支付成功后会看到一个支付宝提示交易成功的页面,该页面会停留几秒,然后会自动跳转回商户指定的同步通知页面(参数return_url ...
- java 字符串大小比较
//java 字符串大小比较 String a="b123"; String b="b124"; String d="b122"; Stri ...
- JWPlayer支持SD/HD
First, we have to render two versions of our video: an SD (standard definition) and HD (high definit ...
- Eclipse格式化代码换行、删除空行
Java代码 Window-preference-Java-Code Style-Formatter|Edit...-Line Wrapping|Maximum line width: 修改一行最大长 ...
- Bootstrap入门(五)表单
Bootstrap入门(五)表单 先引入本地的CSS文件 <link href="css/bootstrap.min.css" rel="stylesheet ...
- linux系统下find删除目录下除一文件外的所有文件
/data/目录下有a.txt b.txt c.txt d.txt删除/data/目录下所有文件,保留b.txt两种方法:1.[root@xuegod62 ~]# find /data/ -type ...