POJ 3250 Bad Hair Day【单调队列】

Description

Some of Farmer John'sNcows (1 ≤N≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle, FJ wants to count the number of other cows that can see the top of other cows' heads.

Each cowihas a specified heighthi(1 ≤hi≤ 1,000,000,000) and is standing in a line of cows all facing east (to the right in our diagrams). Therefore, cowican see the tops of the heads of cows in front of her (namely cowsi+1,i+2, and so on), for as long as these cows are strictly shorter than cowi.

Consider this example:

        =
=       =
=   -   =         Cows facing right -->
=   =   =
= - = = =
= = = = = =
1 2 3 4 5 6

Cow#1 can see the hairstyle of cows #2, 3, 4
Cow#2 can see no cow's hairstyle
Cow#3 can see the hairstyle of cow #4
Cow#4 can see no cow's hairstyle
Cow#5 can see the hairstyle of cow 6
Cow#6 can see no cows at all!

Letcidenote the number of cows whose hairstyle is visible from cowi; please compute the sum ofc1throughcN.For this example, the desired is answer 3 + 0 + 1 + 0 + 1 + 0 = 5.

Input

Line 1: The number of cows,N.
Lines 2..N+1: Linei+1 contains a single integer that is the height of cowi.

Output

Line 1: A single integer that is the sum ofc1throughcN.

Sample Input

6
10
3
7
4
12
2

Sample Output

5

分析:

这个题的实质是求从队列中任意一个数开始连续下降的数的个数的和。所以需要知道从队列中的某个数开始有多少个连续的下降的数。所以考虑使用单调队列。由于这道题不是求一个区间的最值,所以不用记录队首,队列退化为栈。而且没有区间长度限制,所以不用记录下标,也不用保留原数据,降低了空间复杂度。时间复杂度为O(n),注意sum的范围。
code:

 

View Code
#include<stdio.h>
int stack[80010];
int main()
{
int top=0,i,n,p;
__int64 sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&p);
while(top>0&&stack[top]<=p)
top--;
sum+=top;
stack[++top]=p;
}
printf("%I64d\n",sum);
return 0;
}


转载于:https://www.cnblogs.com/dream-wind/archive/2012/03/14/2396291.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中 out、ref、params 修饰符使用方法

使用 out 关键字可以一个方法返回多个返回值。 int i; string str; bool b;public void MyReturnMethod(out int a, out string b,out bool c) {a 9;b "Hello";c false; }params 关键字可以把可变数量的参数(相同类型)作为单个逻辑参数传递给方法。 //返回一些do…

2012年3月编程语言排行榜:JavaScript超越Perl和Python

2012年3月编程语言排行榜&#xff1a;JavaScript超越Perl和Python TIOBE 于昨日公布了2012年3月编程语言指数排行榜。排名前三的语言是&#xff1a;Java、C 和 C#。 在本月排行榜中&#xff0c;JavaScript上升至第8位。由于网站越来越依赖JavaScript&#xff0c;因此JS的流行程…

C#从构造函数中调用其他构造函数

有时&#xff0c;在一个类中有几个构造函数&#xff0c;以容纳某些可选参数&#xff0c;这些构造函数包含一些共同的代码。例如&#xff0c;如下情况&#xff1a; Class Car {private string _description;private int _nWheels;public Car(string description,unit nWheels){_…

Unix整理笔记——安全性——里程碑M13

1 保护信息安全系统有三个基本原则&#xff1a; 机密性&#xff1a;必须阻止那些不需要知道的人了解信息 完整性&#xff1a;信息必须避免未授权的修改或污染 可用性&#xff1a;对那些需要访问信息的人&#xff0c;信息必须是可用的 2 根用户管理选项 sudo

ASP.NET MVC 多语言开发简单案例

首先&#xff0c;新建一个空的MVC项目&#xff0c;增加一个名叫Language的文件夹用于存放资源文件&#xff0c;如下图所示&#xff1a; 在Language文件夹中&#xff0c;增加两个资源文件&#xff0c;分别用于存储中文和英文&#xff0c;如下图所示&#xff1a; 如何添加资源文件…

iphone viewdidLoad运行以及参数的传递。

问题&#xff1a; 有三个view&#xff0c;他们之间传递一个NSArray *NodeArrayIPadLoginViewController----》VedioContainerViewController-----》IpadTreeViewTestController在 VedioContainerViewController的ViewDidLoad 中&#xff0c;若写成如下代码IpadTreeViewTestCont…

C#中使用NPIO实现导入导出Excel简单操作

本文介绍了在Winform中使用NPOI(PIO项目下的.Net组件)来操作Excel文件&#xff0c;而无需安装Office。 要实现的效果是这样的&#xff1a; 1、导出Excel&#xff1a;根据指定datatable&#xff0c;弹出导出窗口&#xff0c;用户自定义路径、导出名&#xff0c;然后导出。 2、…

3招seo技巧让你把关键词做进百度前三

这个技巧也没有什么&#xff0c;说白了就是个百度点击原理&#xff01;当然&#xff0c;这个标题也就是一个标题党&#xff0c;但是的确能让你的排名靠前&#xff0c;因为我之前测试过&#xff0c;我做过一个词&#xff0c;有10个人&#xff0c;点击一下&#xff0c;隔天就第一…

C#中采用OLEDB方式来读取EXCEL文件

使用OLEDB来读取EXCEL的原因很简单&#xff0c;只是因为我感觉代码量不多。代码已经本地测试通过。 public class OlEDBHelp {public DataSet ExcelToDataSet(string path,string tableName "table1"){DataSet ds new DataSet();string strConn string.Format($&q…

ASP.NET MVC 中删除无用视图引擎

默认情况下&#xff0c;ASP.NET MVC 同时支持 WebForm 和 Razor 引擎&#xff0c;而我们通常在同一个项目中只用到了一种视图引擎&#xff0c;如Razor&#xff0c;那么我们就移除没有使用的视图引擎&#xff0c;提高View视图的检索效率。在没有删除WebForm引擎之前&#xff0c;…

VRRP在生产环境中的应用

该案例是笔者做过的一个网络改造项目&#xff0c;同时为了保密只介绍VRRP方面的配置以及要注意的事项。 该方案时某医院核心网络&#xff0c;通过两台S8610走VRRP(和网关相连)。网络拓扑如下 S8610_1配置 en config hostname S8610_1 enable sec ******* line vty 0 4 pass ***…

隐藏ASP.NET MVC版本

默认情况下&#xff0c;ASP.NET MVC网站会把版本号提供给浏览器&#xff0c;如下图所示&#xff1a; 只需在Global.asax中添加一句代码即可&#xff1a; MvcHandler.DisableMvcResponseHeader true; 如下图所示&#xff1a; protected void Application_Start(){MvcHandler.…

使用纯索引子查询优化MySQL的分页查询速度

像这样的查询往往会耗费十几秒的时间 SELECT * FROM news WHERE cat_id 4 ORDER BY id DESC LIMIT150000, 10改进后 SELECT id, value, LENGTH(stuffing) AS len FROM t_limit ORDER BY id LIMIT 150000, 10仍然需要数秒, 但是, 如果将ID作为子查询 SELECT l.id, value, …

ASP.NET MVC 使用防伪造令牌来避免CSRF攻击

本文转自这篇文章 XSRF即在访问B站点的时候&#xff0c;执行了A站点的功能。 比如: A站点登录后&#xff0c;可以修改用户的邮箱&#xff08;接口&#xff1a;/Email/Modify?email123&#xff09;&#xff0c;修改邮箱时只验证用户有没有登录&#xff0c;而且登录信息是保存…

兼容所有浏览器的网页制作方法

其实一般浏览器就IE6、IE7、IE8、火狐、GOOGLE浏览器chrome等&#xff0c;大家最困扰的就是网页在各大浏览器的兼容问题&#xff0c;其实所有浏览器在不兼容方面只存在两点&#xff1a;浮动和外填充&#xff0c;只要把这两点熟悉精通了&#xff0c;那么网页在所有浏览器里显示也…

ASP.NET MVC 使用Log4Net记录系统运行中问题

log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级&#xff0c;以不同的格式&#xff0c;输出到不同的媒介。 在NuGet程序包中下载log4Net组件&#xff0c;如下图所示&#xff1a; 打开Web.config文件&#xff0c;在&…

lzo的安装及在hadoop中的配置

一、前提1、gcc的安装&#xff1a;yum install lib* glibc* gcc* 如果lzo编译出错时可能需要安装2、ant的安装&#xff1a;安装略&#xff0c;最好1.8.2及以上版本&#xff0c;并设置好环境变量 在第三步需要用到ant二、lzo的安装wget http://www.oberhumer.com/opensource/lzo…

ASP.NET MVC 使用Log4Net在不同目录中记录不同类型的日志

在上一篇文章中&#xff0c;实现了利用Log4Net记录系统中出现的问题。如果同时还需要记录用户操作的监控日志&#xff0c;就需要一些修改 修改Web.Cofig配置文件 ,增加一个logger节点和appender节点&#xff0c;用于监控操作日志配置&#xff0c;并且设置不同的日志文件路径&am…

简明python教程 --C++程序员的视角(七):异常

当你的程序中出现某些 异常的 状况的时候&#xff0c;异常就发生了。例如&#xff0c;当你想要读某个文件的时候&#xff0c;而那个文件不存在。或者在程序运行的时候&#xff0c;你不小心把它删除了。上述这些情况可以使用异常来处理。 假如你的程序中有一些无效的语句&#x…

C#中@符号的作用

一、忽略转义字符 string fileName "D:\\文本文件\\text.txt"; string fileName "D:\文本文件\text.txt"; 二、让字符串跨行 string strSQL "SELECT * FROM HumanResources.Employee AS e" " INNER JOIN Person.Contact AS c" &qu…