1. 程式人生 > >P2866 糟糕的一天

P2866 糟糕的一天

pre sca open color ++ closed ack 個數 family

糟糕的一天

洛谷鏈接

挺水的一道題,也就是看每個數後面有多少數比它小,最後把總數加起來。

我們可以用單調棧來實現,並用一個數組來保存每個數現在的狀態。

代碼:

技術分享
 1 #include<cstdio>
 2 long long n,a[80010],stack[80010],top,ans=0;
 3 int main(){
 4     scanf("%lld",&n);
 5     for(long long i=1;i<=n;i++)
 6         scanf("%lld",&a[i]);
 7     a[n+1]=1<<30;
 8     for
(long long i=1;i<=n+1;i++){ 9 while(top&&a[stack[top]]<=a[i]){ 10 ans+=i-stack[top]-1; 11 top--; 12 } 13 stack[++top]=i; 14 } 15 printf("%lld",ans); 16 return 0; 17 }
View Code

P2866 糟糕的一天