諾諾的佇列

2021-07-07 03:06:38 字數 1032 閱讀 9437

題目描述

諾諾表現、成績雙優,於是校長給她一筆money,讓她去外地玩玩。由於本地沒有飛機場,所以諾諾只能坐火車去咯。所以諾諾今天去火車站買票,卻看到了n多人在火車站裡啊,諾諾一陣頭暈。機靈的她突然發現,有n個人在隊伍裡(和上文的n毫無關係- -||),人們等得很無聊,於是他們開始轉來轉去,想在隊伍裡尋找自己的熟人。佇列中任意兩個人a和b,如果他們是相鄰或他們之間沒有人比a或b高,那麼他們是可以互相看得見的。

諾諾想計算出有多少對人可以互相看見,那麼你能幫幫諾諾嗎?

本題資料範圍:

40%的測試資料:n≤10000;

80%的測試資料:n≤100000;

100%的測試資料:n≤500000。

輸入格式

輸入的第一行包含乙個整數n (1≤n≤500 000), 表示隊伍中共有n個人;

接下來的n行中,每行包含乙個整數,表示人的高度,人的高度<10000。

輸出格式

輸出僅有一行,包含乙個數s,表示隊伍中共有s對人可以互相看見。

樣例輸入樣例輸出

單調棧。

這道題考慮到特殊資料,但是發現自己將特殊資料答案算錯了 5

5 5 3 5 5 8

開始一直算成9了,注意題目講的是

他們是相鄰或他們之間沒有人比a或b高,

不過這道題需要考慮到相等的情況。

#include #define ll long long

const int maxn = 500005;

int a[maxn], stack[maxn];

int main ( )

if ( j >= 0 ) //遍歷完就不需要加1,否則前面那個肯定是大於a[i]

ans ++;

stack[++ top] = a[i];

}else

//printf ( "**%d\n", ans );

}printf ( "%lld", ans );

return 0;}/*

55 5 3 5 5

8*/

佇列 優先佇列的學習

佇列定義 佇列是限定只能在表尾進行 插入,在表頭進行刪除的線性表 隊尾 允許插入的一端 隊頭 允許刪除的一端 佇列的定義 include queue 標頭檔案 using namespace std 需要加上使用名稱 空間,和sort 排序函式是一樣的。queue int q 格式 queue 型別...

佇列 迴圈佇列的實現

為了可以重新利用佇列底層陣列中已刪除元素所佔的空間,消除可能出現的 假滿 現象,將順序佇列改進為迴圈佇列。迴圈佇列是首尾相連的佇列 當front rear變數達到底層陣列的capacity 1之後,再向前以為就變成0.入隊 1 判斷佇列是否已滿,已滿丟擲越界異常 2 不滿的話把元素查到隊尾,並且re...

棧的佇列(佇列)

二.關於佇列的簡單實現。順序佇列的基本實現和順序棧的實現基本相似。順序佇列在出列和入列的時候會使佇列整體向上移動,會浪費一定的空間。因此出現了一種佇列叫做迴圈佇列。迴圈佇列可以實現空間的重複利用,大大節省了空間。關於迴圈佇列的實現 建立乙個空佇列 struct node struct node in...