洛谷 P2422 良好的感覺

2021-09-06 20:47:33 字數 1013 閱讀 2359

kkk做了乙個人體感覺分析器。每一天,人都有乙個感受值ai,ai越大,表示人感覺越舒適。在一段時間[i, j]內,人的舒適程度定義為[i, j]中最不舒服的那一天的感受值 * [i, j]中每一天感受值的和。現在給出kkk在連續n天中的感受值,請問,在哪一段時間,kkk感覺最舒適?

輸入格式:

第一行為n,代表資料記錄的天數

第二行n個整數,代表每一天的感受值

輸出格式:

一行,表示在最舒適的一段時間中的感受值。

輸入樣例#1:

6

3 1 6 4 5 2

輸出樣例#1:

60
樣例解釋:

kkk最開心的一段時間是第3天到第5天,開心值:(6+4+5)*4=60

對於30%的資料,1<=n<=100

對於70%的資料,1<=n<=2000

對於100%的資料,1<=n<=100000,1<=感受值<=1000000

我一眼看上去,好像沒有什麼思路,於是我決定換一種思路來做

因為如果確定了乙個點為最小值,那麼可以達到的最舒服的天數就顯而易見了

這樣時間就優化到o(n^2),想起以前學lca的時候用了倍增,於是我決定也用倍增

並且先用st表預處理一下時間直接優化到o(nlogn)

參考**

#include #include using namespace std ;

typedef long long ll ;

const int n = 1e5 + 10 ;

int n , a[n] ;

int st[n][21] , log[n] ;

ll sum[n] ;

int solve ( int x , int y )

cout << maxx << endl ; return 0 ;

}

P2422 良好的感覺

kkk 做了乙個人體感覺分析器。每一天,人都有乙個感受值 a ia i a ia i 越大,表示人感覺越舒適。在一段時間 left i,j right i,j 內,人的舒適程度定義為 left i,j right i,j 中最不舒服的那一天的感受值 times left i,j right i,j ...

luogu 2422 良好的感覺

kkk做了乙個人體感覺分析器。每一天,人都有乙個感受值ai,ai越大,表示人感覺越舒適。在一段時間 i,j 內,人的舒適程度定義為 i,j 中最不舒服的那一天的感受值 i,j 中每一天感受值的和。現在給出kkk在連續n天中的感受值,請問,在哪一段時間,kkk感覺最舒適?第一行為n,代表資料記錄的天數...

Luogu P2422良好的感覺(單調棧)

題目鏈結 寫 能力需要極大提公升。我在五分鐘之內想到了單調棧,然後花了乙個小時的時間去看我單調佇列為啥寫錯了 首先這題需要轉換自己的思維。列舉所有 最小點 然後看它往左往右最大能擴充套件多少。維護乙個單調遞增的序列,彈棧時就會是這種情況 設被彈出去的元素是s,那它為什麼會被彈出去呢?因為它比當前元素...