Bad Hair Day---poj3250(栈的运用)
题目链接:http://poj.org/problem?id=3250
题意:
n个牛排成一列向右看,牛i能看到牛j的头顶,当且仅当牛j在牛i的右边并且牛i与牛j之间的所有牛均比牛i矮。
设牛i能看到的牛数为Ci,求∑Ci 本题正确解法是用栈来做的-----刚开始看的时候表示根本想不到栈 单调栈-----所谓单调栈也就是每次加入一个新元素时,把栈中小于等于这个值的元素弹出。
接下来回到这道题。求所有牛总共能看到多少牛,可以转化为:这n头牛共能被多少头牛看见。
当我们新加入一个高度值时,如果栈中存在元素小于新加入的高度值,那么这些小的牛肯定看不见这个高度的牛(那就看不见这头牛后边的所有牛),
所以就可以把这些元素弹出。每次加入新元素,并执行完弹出操作后,栈中元素个数便是可以看见这个牛的“牛数”~~~。
#include<stdio.h>
#include<stdio.h>
#include<algorithm>
#define N 1100
#include<stack>
#include<iostream>
using namespace std;
typedef long long LL;
int main()
{
int n, x; while(scanf("%d", &n)!=EOF)
{
stack<int>sta;
LL ans=0;
scanf("%d", &x);
sta.push(x);
for(int i=2; i<=n; i++)
{
scanf("%d", &x);
while(sta.size() && x>=sta.top())
sta.pop();
ans+=sta.size();
sta.push(x);
}
printf("%lld\n", ans);
}
return 0;
}
Bad Hair Day---poj3250(栈的运用)的更多相关文章
- POJ3250[USACO2006Nov]Bad Hair Day[单调栈]
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17774 Accepted: 6000 Des ...
- poj3250(单调栈模板题)
题目链接:https://vjudge.net/problem/POJ-3250 题意:求序列中每个点右边第一个>=自身的点的下标. 思路:简单介绍单调栈,主要用来求向左/右第一个小于/大于自身 ...
- POJ3250 Bad Hair Day(单调栈)
题目大概就是给一个序列,问每个数右边有几个连续且小于该数的数. 用单调递减栈搞搞就是了. #include<cstdio> #include<cstring> using na ...
- POJ3250(单调栈)
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17614 Accepted: 5937 Des ...
- Bad Hair Day [POJ3250] [单调栈 或 二分+RMQ]
题意Farmer John的奶牛在风中凌乱了它们的发型……每只奶牛都有一个身高hi(1 ≤ hi ≤ 1,000,000,000),现在在这里有一排全部面向右方的奶牛,一共有N只(1 ≤ N ≤ 80 ...
- 【POJ3250】Bad Hair Day 单调栈
题目大意:给定一个由 N 个数组成的序列,求以每个序列为基准,向右最大有多少个数字都比它小. 单调栈 单调栈中维护的是数组的下标. 单调栈在每个元素出栈时统计该出栈元素的答案贡献或对应的值. 单调栈主 ...
- poj3250 Bad Hair Day 单调栈(递减)
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24420 Accepted: 8292 Des ...
- [poj3250]单调栈 Bad Hair Day
解题关键:将每头牛看到的牛头数总和转化为每头牛被看到的次数,然后用单调栈求解,其实做这道题的目的只是熟悉下单调栈 此题为递减栈 #include<cstdio> #include<c ...
- 单调栈2 POJ3250 类似校内选拔I题
这个题再次证明了单调栈的力量 简单 单调栈 类似上次校内选拔消砖块 一堆牛面朝右排 给出从左到右的 问每个牛的能看到前面牛发型的个数之和 //re原因 因为在执行pop的时候没有判断empty 程序崩 ...
- POJ3250【单调栈】
思路: 维护一个单调递增的栈,对于栈顶元素<=新值来说,那么后面的,我一定看不到了,pop掉以后,那么这时候的栈的大小就是我能看到的这个刚刚pop出去元素的个数. //#include < ...
随机推荐
- C语言 · 打印1~100间的质数(素数)
算法提高 c++_ch02_04 时间限制:1.0s 内存限制:256.0MB 问题描述 输出1~100间的质数并显示出来.注意1不是质数. 输出格式 每行输出一个质数. 2 3 . ...
- inline-block元素的空白间距解决方法<转>
使用inline-block来代替float进行布局,或者使用inline-block来实现元素的居中效果.有关于使用inline-block来代替float的讨论也蛮多的. 不过就是使用inline ...
- phpstrom xdebug wamp调试配置文档
下载并安装phpstorm,下载地址如下 http://download-cf.jetbrains.com/webide/PhpStorm-9.0.2.exe 安装完成后,完成注册,注册方法如下 ...
- javascript 屏蔽F5,BackSpace等各种按键
function DisableF5(){ with (event){ // F5 and Ctrl+R if (keyCode==116 || (ctrlKey && keyCode ...
- 004杰信-关于formSubmit('factorycreate.action','_self')路径的疑惑
本文材料来源于传智播客,在此说明. 整个项目结构:
- 应用于Java中的一个开源的表达式语言(Expression Language)
OGNL(英文全称:Object Graph Navigation Language,中文名:对象导航图语言)是应用于Java中的一个开源的表达式语言(Expression Language),它被集 ...
- php -- PHP实现点击a标签的href做链接时,直接保存文件(任何类型),而不是通过浏览器直接打开下载的文件
之前做项目遇到这样一个问题,就是在php环境下,用a标签的href链接到一个资源,比如是mp3或者lrc文件时,点击之后不是出现保存文件的提示,而是调用本地程序打开文件或者直接在浏览器上解析.网上说可 ...
- JAVA基础之訪问控制权限(封装)
包:库单元 1.当编写一个Java源码文件时.此文件通常被称为编译单元(有时也被称为转译单元). 2.每一个编译单元都必须有一个后缀名.java,而在编译单元内则能够有一个public类,该类名称必须 ...
- Java凝视模板
设置凝视模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是全部需设置凝 ...
- No JSON object could be decoded
json中的true 不能写成True,否则不能被解析.