编程题解析-发型糟糕的一天
来源:互联网 发布:达芬奇调色软件12.5 编辑:程序博客网 时间:2024/06/10 06:04
题目描述
题目来自www.openjudge.cn,标题叫做“发型糟糕的一天”,题目描述详见http://stepbystep.openjudge.cn/stackqueue/11/
题目的总时间限制: 2000ms 单个测试点时间限制: 1000ms。
错误解法
采用以下结构的两重循环的话,将发生超时现象。
for (i = 0; i < N; i++)
for(j = i + 1; j < N; j++)
如果奶牛i可以看到奶牛j,则计数器加1;
解题思路
不去统计每一头奶牛能看到前方多少头奶牛;而是去统计一头奶牛能被后方多少头奶牛看见。所有能看见奶牛i的奶牛的高度必定形成一个单调递减序列,且高度大于奶牛i的高度。
我们用堆栈来存储单调递减序列。若奶牛i的高度为h[i],那么把栈顶部所有高度小于等于h[i]的元素都弹出(因为按题意,这些奶牛是无法看到奶牛i的),余下的元素个数就是能够看到奶牛i的奶牛的数目。
代码实现
#include <iostream>#include <stack>using namespace std;int main(){ int cowNum; cin >> cowNum; stack<long> cows; long result = 0; for (int i = 0; i < cowNum; i++) { long h; cin >> h; while (!cows.empty() && h >= cows.top()) cows.pop(); result += cows.size(); cows.push(h); } cout << result << endl;}
0 0
- 编程题解析-发型糟糕的一天
- 发型糟糕的一天
- 发型糟糕的一天(简单的单调栈运用)
- openjudge 发型糟糕的一天(POJ3250 Bad Hair Day) 单调队列
- 糟糕的一天
- 糟糕的一天
- 糟糕的一天
- 糟糕的一天
- 数据库糟糕的一天
- 糟糕的一天
- 22岁生日,糟糕的一天
- 糟糕的一天,心情差到了极点
- 04年9月20~~~网络糟糕的一天
- 本年度最糟糕的一天,流日不利
- 最糟糕的编程面试题
- Java编程中十大最糟糕的事情
- Go是设计糟糕的编程语言
- 关于我的发型
- 聚类评价指标(一)
- AOJ 2456 Usoperanto (树形dp)解题报告
- Tomcat 8 Source Code Analysis[1] Code Preparation
- 《TCP/IP详解 卷一:协议》读书笔记--链路层
- ocp-40
- 编程题解析-发型糟糕的一天
- 简单的view 自定义
- CodeForces 415B Mashmokh and Tokens
- 基于Android 4.4 开发的多窗口系统 开放源码
- Databus-实时低延时数据抓取系统
- Java 字符串和整型的转换
- mysql 存储字符表情
- POJ: Exponentiation
- xampp3.2.1安装memcached扩展