中石油訓練賽 圍欄翻新 思維 貪心 差分

2021-09-29 22:01:02 字數 1250 閱讀 3099

小明的破舊圍欄又要噴塗油漆了。圍欄由n個木板構成,每個寬度都為1cm,但是高度各不相同。他給自己買了乙個噴漆機器,噴塗頭恰好也是1cm寬。

小明的噴漆機器是直接噴射的,因此噴頭的每乙個部位必須一直接觸到木板,否則尤其會汙染他的農田。並且機器也必須時刻與地面平行。可以看出,小明每次必須在同一高度對木板噴塗,可以從左到右直到沒有圍欄可以噴漆。這樣,若干次噴漆之後,就可以將圍欄翻新啦!

由於機器的特殊性,小明希望噴塗的次數盡量的少。如下圖的圍欄情況,共有5塊木板,高度分別為2,3,4,1,2。第一次可以刷1~5,第二次刷1~3,第三次刷2~3,第四次刷3~3,第五次刷5~5。5次就可以刷完!(刷的順序可以隨意調整,也可以從上面開始刷)

小明想要知道至少需要刷多少次就可以把圍欄都刷完,請你幫忙計算一下!

第一行乙個整數n,表示木板數量。

接下來n行,每行乙個整數,表示每塊木板依次的高度。

翻新圍欄所需的最少噴漆次數。

5

2 3 4 1 2

5
100%的資料1<=n<=100000,對於每個木板的高度0<=hi<=10000。

題目分析:又是一道被zx學長秒穿了的題目之一。。

一開始看到這個題目不知道該怎麼維護,想用資料結構強行模擬這個過程,因為如果按照高度來的話,最多也只需要迴圈1e4次就夠了,但是實在沒想到合適的方法去維護每一次的過程

後來經過zx學長的提醒之後,意識到了這是乙個貪心的題目,我們可以正著o(n)掃一遍整個序列,然後累加一下每兩個遞增子串之間的差值,答案就出來了

至於為什麼答案會這麼簡單,我們可以這樣想,每次刷當前柵欄的時候,我們肯定盡可能的多刷才能得到最優解,我們假設當前柵欄高度之下的柵欄已經處理完畢,那麼我們就讓與當前柵欄將相連線的並且高度比當前柵欄還要高的柵欄的同一層一起刷上顏色,這樣就能保證答案最優了,也就是按照上述思路解出的答案了

**:

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const int n=1e5+100;

int a[n];

int main()

中石油訓練賽 招待 思維

題目大意 給出乙個天平,砝碼由3的冪次組成,再給出物品重量,求如何擺放砝碼能使得天平平衡 題目分析 既然給出的砝碼是3的冪次組成,那麼我們就將給出的物品重量轉換為三進製即可,那麼表示其每一位只有可能是0,1,2三個數字,我們假設物品擺在a盤,那麼 當前位數字為0,就說明該冪次沒有貢獻,所以不做處理 ...

中石油訓練賽 姓氏 思維 水題

在乙個很大的課室裡,裡面有很多學生在聽課。l老師挑選了其中的n個不同的學生起立回答問題,l老師對起立的每乙個學生都是問同樣的問題 在本課室裡,和你同姓的學生有多少人 不包括你自己 這n個起立的同學的回答如下 第1位起立的同學回答 和我同姓的,除了我之外,本課室裡還有a 1 個學生。第2位起立的同學回...

中石油訓練賽十 天平

莫名感覺這道題和找零錢是一樣一樣的,便於記憶情況下,還是給寫一下比較好 簡單思路 貪心,要使右盤所放砝碼最少,則要從較大質量的砝碼開始放起。小 t 到 cz 中學上的第一堂課是物理課,第一堂課 l 老師就把大家帶到創新實驗室去 做實驗了,實驗的內容是天平稱物。眾所周知天平是物理實驗室中的一種衡量物體...