約翰的n(1≤n≤10^5)頭奶牛站成一排,奶牛i的身高是hi(l≤hi≤1,000,000).現在,每只奶牛都在向右看齊.對於奶牛i,如果奶牛j滿足i第 1 行輸入 n,之後每行輸入乙個身高 h_i。
共 n 行,按順序每行輸出乙隻奶牛的最近仰望物件,如果沒有仰望物件,輸出 0。
632
6112
330
660
每次只在棧中存數字標號,進來乙個數,就把小於等於他的數全部彈出,若剩下有數,則答案是剩下的數,否則答案是0
因為若x小於當前數,x不會成為答案。
彈棧:
while
(!s.
empty()
&&a[s.
top()]
<=a[i]
) s.
pop(
);
更新:
if
(!s.
empty()
) f[i]
=s.top()
;else f[i]=0
;
存入:
s.
push
(i);
#include
#define m(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define mod 100003
using
namespace std;
inline
void
read
(int
&x)while
(ch>=
'0'&& ch<=
'9')
if(c==
'-')x=
-x;}
stack<
int> s;
int a[
100005
],f[
100005];
int i,n;
intmain()
for(i=
1;i<=n;i++
)printf
("%d\n"
,f[i]);
return0;
}
洛谷P1330 封鎖陽光大學 前向星,bfs
題目 解題思路 1 點數 10000,邊數 100000,因此採用前向星存圖。2 圖可能不至乙個連通塊。遍歷點,若點染色為0,則bfs。bfs內以前向星遍歷邊,染色邊的端點,並記錄染色1與2的計數。ac include include includeusing namespace std int n...