OJ的一道题 一直WA: 发型糟糕的一天

The_Primer 2018-03-06 10:03:37
农夫John 的N(1 ≤ N ≤ 80,000)只奶牛中,有一些也许正在经历发型糟糕的一天。每只奶牛对自己乱糟糟的发型都有自知之明,农夫John想知道所有奶牛能看到其他奶牛头顶的数量之和。

任意奶牛i身高记为 hi (1 ≤ hi ≤ 1,000,000,000),所有奶牛面向东方(本题示意图的右面)依次站成一条线。因此,奶牛i能够看到在它前面的(奶牛i+1,i+2…)所有身高比它低的奶牛,直到被一头比它高的奶牛挡住

考虑如下的例子:

=
= =
= - = Cows facing right ->
= = =
= - = = =
= = = = = =
1 2 3 4 5 6
奶牛#1 可以看见奶牛#2, 3, 4的头顶

奶牛#2 无法看到任何奶牛的头顶

奶牛#3可以看见奶牛#4的头顶

奶牛#4无法看到任何奶牛的头顶

奶牛#5可以看见奶牛#6的头顶

奶牛#6无法看到任何奶牛的头顶!

用ci表示奶牛i能够看到头顶的奶牛个数;请计算c1 至cN的和。对于上面这个例子,其和为:3 + 0 + 1 + 0 + 1 + 0 = 5。

输入
第1行:奶牛数N

第2行至N+1行:第i+1行包含一个整数,表示奶牛i的高度

输出
第1行:c1 至cN的累加和
样例输入
6
10
3
7
4
12
2
样例输出
5




#include<iostream>
#include<cmath>
#include<queue>
using namespace std;

int main()
{
int n, ch;

while (scanf("%d", &n) != EOF)
{
long long ans = 0; deque<int>q;
for (int i = 0; i < n; i++)
{
cin >> ch;
while (!q.empty() && q.back() <= ch) q.pop_back();
q.push_back(ch);
ans += (q.size() - 1);
}
cout << ans << endl;
}
return 0;
}
...全文
272 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
The_Primer 2018-03-07
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
边界条件 输入输出格式 ……
好像确实是这样。。。
赵4老师 2018-03-07
  • 打赏
  • 举报
回复
边界条件 输入输出格式 ……
永远的追梦人 2018-03-07
  • 打赏
  • 举报
回复
看不出问题~ 会不会是等高的情况也是看的见得

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧