POJ3250--Bad Hair Day(栈)
2015-08-19 22:55
288 查看
题目大意:有n头牛,身高不一样,排成一排,每头牛可以看见后面一头牛的个数之和,如果相等就看不见,因为是看头发啦~,头发
在眼睛上面。嗯~出题人应该是这样想的,23333
分析:一眼就能看出来是用栈来做。我是从后往前做的,栈顶的元素小于当前身高,栈顶元素出栈,就说明当前的牛看得见栈顶的
牛,接着比较,直到栈顶的牛的身高比当前身高要高,那么就找到了当前牛能看见的最远距离。
不要问我为什么全部用%lld,因为我没用全用的时候,一直WA。。。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 80010;
long long h[maxn];
int R[maxn];
int st[maxn];
long long n;
int main() {
while(~scanf("%lld", &n)) {
for(int i = 0; i < n; i++)
scanf("%lld", &h[i]);
int t = 0;
long long sum = 0;
for(int i = n-1; i >= 0; i--) {
while(t > 0 && h[st[t-1]] < h[i]) t--;
R[i] = t == 0 ? n : st[t-1];
st[t++] = i;
sum += R[i]-1-i;
}
printf("%lld\n", sum);
}
return 0;
}
在眼睛上面。嗯~出题人应该是这样想的,23333
分析:一眼就能看出来是用栈来做。我是从后往前做的,栈顶的元素小于当前身高,栈顶元素出栈,就说明当前的牛看得见栈顶的
牛,接着比较,直到栈顶的牛的身高比当前身高要高,那么就找到了当前牛能看见的最远距离。
不要问我为什么全部用%lld,因为我没用全用的时候,一直WA。。。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 80010;
long long h[maxn];
int R[maxn];
int st[maxn];
long long n;
int main() {
while(~scanf("%lld", &n)) {
for(int i = 0; i < n; i++)
scanf("%lld", &h[i]);
int t = 0;
long long sum = 0;
for(int i = n-1; i >= 0; i--) {
while(t > 0 && h[st[t-1]] < h[i]) t--;
R[i] = t == 0 ? n : st[t-1];
st[t++] = i;
sum += R[i]-1-i;
}
printf("%lld\n", sum);
}
return 0;
}
相关文章推荐
- CF#310 div2 D set+pair+贪心
- Chain of Responsibility模式
- LeetCode(70) Climbing Stairs
- poj1575 Easier Done Than Said?(模拟,水题)
- LeetCode(70) Climbing Stairs
- hdu 5319 Painter 2015 Multi-University Training Contest 3
- HDU 1532 Drainage Ditches(基础最大流)
- hdu 3038 How Many Answers Are Wrong(种类并查集)2009 Multi-University Training Contest 13
- POJ 1218 THE DRUNK JAILER
- HDU 3411 Snail Alice
- THE DRUNK JAILER 1218
- 【LeetCode】217_Contains Duplicate
- nyoj77开灯问题 VS poj1218 THE DRUNK JAILER(开关灯问题模板)
- 2015 HUAS Summer Trainning #6~J
- poj 1218&&hdu 1337 The Drunk Jailer【简单模拟】
- HDOJ 1337 The Drunk Jailer(水题)
- VUa 10976 Fractions Again?! (枚举+暴力水题)
- ItailorCode
- main() 参数:argc 与 argv
- UVa-442 Matrix Chain Multiplication