小陽買水果
需要列舉區間的左右端點,但是區間太多了.我們用字首陣列來表示區間v[r],然後我們給v[r]陣列儲存原位置並按從值從小到大排序,那麼排序後右邊的一定大於左邊的,如果左邊右端點小於右邊的右端點,這說明這一段區間和大於0,說明在這個一段連續可以買。因為排序過了,兩個右邊減左邊一定大於0,所以遍歷時記錄端點最小值,只要後面的端點大於前面端點最小值,就比較更新。因為是大於等於零,不能為0,所以排序時當大小相等時,讓位置小的排到後面,可以避免產生計算得到錯誤答案。要增加乙個前面的0值為0端點,防止n=1時找不到左端點。
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace std;
struct acv[
2000010];
bool
cmp(ac a1,ac a2)
intread()
while
(ch>=
'0'&&ch<=
'9') s=s*
10+ch-
'0',ch=
getchar()
;return s*w;
}int
main()
n++;sort
(v+1
,v+n+
1,cmp)
;int minx=n,ans=0;
for(
int i=
1;i<=n;
++i)
printf
("%d"
,ans)
;}
牛客小白月賽16 D 小陽買水果
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 水果店裡有 nn個水果排成一列。店長要求顧客只能買一段連續的水果。小陽對每個水果都有乙個喜愛程度 aiai,最終的滿意度為他買到的水果的喜歡程度之和。如果和為正 不...
小陽買水果(線段樹維護最大值 樹上二分)
題目鏈結 給n個數 含負數 連續區間和大於0,區間長度最大 題解 預處理字首和並插入到線段樹里維護最大值。列舉字首和,然後在當前 字首和 位置i到n範圍上找離i位置最遠且大於 當前字首和 的字首和。怎麼找最遠呢?線段樹上優先查詢右兒子的區間就可以實現了。include define rep i,a,...
牛客小白月賽16 D 小陽買水果 (思維題)
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 水果店裡有 n nn個水果排成一列。店長要求顧客只能買一段連續的水果。小陽對每個水果都有乙個喜愛程度 a i ai ai,最終的滿意度為他買到的水果的喜歡程度之和。...