NOIP2016模擬賽No 1 牛宮

2021-07-14 17:55:07 字數 1960 閱讀 8667

題目描述a

p 神牛準備給自己蓋一座很華麗的宮殿。於是,他看中了一塊n∗

m 的矩形空地。空地中每個格仔都有自己的海拔高度。ap

想讓他的宮殿的平均海拔在海平面之上(假設海平面的高度是0 

,平均數都會算吧?)。而且,ap

希望他的宮殿盡量大,能夠容納更多的人來膜拜他。請問ap

的宮殿最後會有多大?

輸入

第一行為

n 和

m。之後

n 行,每行

m個數,描述的空地的海拔。

輸出

輸出一行,表示宮殿最大面積。

樣例輸入3

2 4  0

−10 

−2 −

樣例輸出4

提示

對於30% 

的資料,n,

m≤50 

; 對於100% 

的資料,n,

m≤200 

解法

(首先,宮殿也是矩形= =)這題n

6 和n4

暴力很顯然在n

4 的思路上進行優化。保留枚舉子矩陣的左右端的列,在行的列舉上做優化。對於乙個確定的l、

r ,可以用行字首和o(

1)知道第i 

行在這個區間內的值s[

i][r

]−s[

i][l

−1] 

。 我們要找乙個平均值大於0 

的區間,就是需要找到一段和大於0 

的行。 對s

[i][

r]−s

[i][

l−1]

做字首和,即s[

k]=∑

ki=1

(s[i

][r]

−s[i

][l−

1]) 

問題現在就轉化成為找乙個i∈

[0,k

) 使得s[

k]−s

[i]>0 

且i盡量小。

因為我們現在求乙個區間的值可以用

s 陣列相減得到結果,所以注意到乙個性質,如果對於乙個數i∈

[0,k

) ,還存在j∈

[0,i

) 且s[j

]<=s[

i],那麼還要i 

幹什麼……

所有比s[i

] 大的,都比s[

j]大,與j 

得到的答案也都更優。

於是乎……選擇性地保留一些

s來更新答案,在k 

從上往下掃時,如果s[

k]比最後乙個記錄的

s 還小,就把s[

k]也記錄上

(這是乙個單調棧)

然後更新答案時二分查詢單調棧中第乙個可行元素。

時間代價n3

log(

n) 

(題外話一:我還寫了個n3

log(

lim)

的線段樹硬上失敗……)

(題外話二:資料有點水,暴力優化一下就跑過了……)

**

#include

#define ll long long

#define n 250

#define lim 1000000000000

int n,m,ans,l,r,mid,q[n];

long long s[n][n],s[n];

inline int max(const int &a,const int &b)

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

}

NOIP2016模擬賽No 1 最小密度路徑

題目描述 這次的任務很簡單,給出了一張有 n 個點 m條邊的加權有向無環圖,接下來有q 個詢問,每個詢問包括2 個節點x 和y,要求算出從 x 到 y的一條路徑,使得密度最小 密度的定義為,路徑上邊的權值和除以邊的數量 輸入 第一行包括2 個整數n和 m 以下m 行,每行三個數字a b w 表示從a...

NOIP2016複賽模擬賽 朋友

問題描述 mxy 即將前往新世界。在前往新世界的過程中,ta 遇見了兩種人。一種是只和lowb 做朋友,即當且僅當自己 的能力值大於對方時他們會成為朋友,另一種是大神我們做朋友,即當且僅當自己的能力 值小於對方時他們會成為朋友。現在告訴你兩種人的能力值。請你計算一共有多少對友好關係。輸入 每組測試資...

NOIP2016模擬 JackMa 貪心

問題描述 mr he 因討厭?手動和諧 而徹底放棄網購,他的日常用品都要到商場去購買,而且必須付現金。但是現 金購買,經常會遇到找零的問題,那麼現在請你幫助他解決這樣乙個問題 現在 mr he 手上有 n 種不同面值的硬幣,每種硬幣有無限多個。為了方便購物,他希望帶盡量 少的硬幣,但是要能組合出 1...