P3401: [Usaco2009 Mar]Look Up 仰望
这道题第一眼还以为是树状数组,于是乎打着打着也是能过的
const maxn=;
var n,i,j,maxx:longint;
h,l:array[..] of longint;
p:array[..] of longint;
function lowbit(x:longint):longint;
begin
exit(x and (-x));
end;
procedure insert(x,i:longint);
var tem:longint;
begin
tem:=x;
while tem<=maxx+ do
begin
p[tem]:=i;
tem:=tem+lowbit(tem);
end;
end;
function work(x:longint):longint;
var tem:longint;
begin
tem:=maxn;
while x> do
begin
if (p[x]<tem) and (p[x]<>) then tem:=p[x];
x:=x-lowbit(x);
end;
if tem=maxn then exit()
else exit(tem);
end;
begin
readln(n);
for i:= to n do
begin
readln(h[i]);
if h[i]>maxx then maxx:=h[i];
end;
for i:= to n do
h[i]:=maxx+-h[i];
l[n]:=;
insert(h[n],n);
for i:=n- downto do
begin
l[i]:=work(h[i]-);
insert(h[i],i);
end;
for i:= to n- do
writeln(l[i]);
write(l[n]);
end.
然而这道题正确解法是 单调栈!!
type
node=record
num,h:longint;
end;
var n,i,j,num,now:longint;
stack:array[..] of node;
h,l:array[..] of longint;
begin
readln(n);
for i:= to n do
readln(h[i]);
now:=;
for i:=n downto do
begin
while (now>) and (stack[now].h<=h[i]) do
dec(now);
l[i]:=stack[now].num;
inc(now);
stack[now].h:=h[i];
stack[now].num:=i;
end;
for i:= to n do writeln(l[i]);
end.
好吧,差不多,差不多=-=//
(转载请注明出处:http://www.cnblogs.com/Kalenda/)
P3401: [Usaco2009 Mar]Look Up 仰望的更多相关文章
- BZOJ3401: [Usaco2009 Mar]Look Up 仰望
3401: [Usaco2009 Mar]Look Up 仰望 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 87 Solved: 58[Submit ...
- BZOJ 3401: [Usaco2009 Mar]Look Up 仰望( 单调栈 )
n <= 105 , 其实是10 ^ 5 ....坑...我一开始写了个模拟结果就 RE 了.. 发现这个后写了个单调栈就 A 了... ---------------------------- ...
- 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 ...
- BZOJ 3401: [Usaco2009 Mar]Look Up 仰望(离线+平衡树)
刷银组刷得好开心= = 离线按权值排序,从大到小插入二叉树,查找树中比这个数大的 CODE: #include<cstdio>#include<iostream>#includ ...
- bzoj 3401: [Usaco2009 Mar]Look Up 仰望【单调栈】
用单调递减的栈从后往前扫一遍即可 #include<iostream> #include<cstdio> using namespace std; const int N=10 ...
- bzoj 3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MB Description 约翰用沙子建了一座城堡.正 ...
- BZOJ3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队
3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 89 Solve ...
- BZOJ3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 22 Solved: 17[Sub ...
随机推荐
- java 命令行操作
打包命令 例如:将testproject下的文件打包成test.war jar cvf test.war ./testproject
- leetcode 24
链表操作的,要注意标记头结点和边界问题. 代码如下: ListNode *swapPairs(ListNode *head) { if(head==NULL||head->next==NULL) ...
- MBR解析
先推广一下QQ群:61618925.欢迎各位爱好编程的朋友加入. 一.程序界面 二.关键部分代码: 1.数据结构定义 #define MBRSIZE 512 #define BOOTRECORDSIZ ...
- Valid Parentheses [LeetCode 20]
1- 问题描述 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if ...
- Windows Phone零距离开发(Composite Thread组合线程)
简洁流畅,快速响应是Windows Phone的特点也是他的买点,我们在开发App时候,也要在手机有限的硬件性能上最大限度做到UI快速响应,微软在优化手机快速响应这块做了很多底层优化工作,其中有一个就 ...
- 基于HTML5 的人脸识别活体认证
近几年,人脸识别技术在身份认证领域的应用已经有了较多应用,例如:支付宝.招行的取款.养老金领取等方面,但在杜绝假冒.认证安全性等方面,目前还是一个比较需要进一步解决的课题,特别是在移动端的活体认证技术 ...
- 启动hadoop报ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile
不知道怎么回事,今天在启动集群时通过jps查看进程时始终有一个standby namenode进程无法启动.查看日志时报的是不能加载fsimage文件.日志截图如下: 日志报的很明显了是不能加载元数据 ...
- linux 的开机启动脚本顺序
linux 开机启动脚本顺序 linux 开机启动脚本顺序. 第一步:启动内核 第二步:执行init (配置文件/etc/inittab) 第三步:启动相应的脚本,并且打开终端/etc/init.d ...
- 强大的网络通信框架(实现缓存)--第三方开源--volley
Android Volley是Android平台上很好用的第三方开源网络通信框架.使用简答,功能强大. Android Volley的库jar包Volley.ja下载连接地址:Volley下载 下载后 ...
- 通过API函数来控制SQLite数据库增删改查
person类属性有Intenger id,String name,Intenger age,相应的构造方法和set get方法. package com.xh.tx.dao; import and ...