總時間限制:
1000ms
記憶體限制:
131072kb
描述
春春幼兒園舉辦了一年一度的「積木大賽」。今年比賽的內容是搭建一座寬度為n的大廈,大廈可以看成由n塊寬度為1的積木組成,第i塊積木的最終高度需要是hi。輸入在搭建開始之前,沒有任何積木(可以看成n塊高度為0的積木)。接下來每次操作,小朋友們可以選擇一段連續區間[l,r],然後將第l塊到第r塊之間(含第l塊和第r塊)所有積木的高度分別增加1。
小m是個聰明的小朋友,她很快想出了建造大廈的最佳策略,使得建造所需的操作次數最少。但她不是乙個勤於動手的孩子,所以想請你幫忙實現這個策略,並求出最少的操作次數。
輸入包含兩行,第一行包含乙個整數n,表示大廈的寬度。輸出第二行包含n個整數,第i個整數為hi。
僅一行,即建造所需的最少運算元。樣例輸入
樣例輸出5
2 3 4 1 2
5
提示
資料範圍
其中一種可行的最佳方案,依次選擇 [1,5] [1,3] [2,3] [3,3] [5,5]
對於 30%的資料,有1 ≤ n ≤ 10;
對於 70%的資料,有1 ≤ n ≤ 1000;
對於 100%的資料,有1 ≤ n ≤ 100000,0 ≤ hi ≤ 10000。
**noip2013t day2 t1
貪心法
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
int n;
int h[100005]=;
int cnt=0;
void dfs(int l,int r)//從底開始,每一次找最長的可操作區間
int t=h[l];
for(int i=l;i<=r;++i)
dfs(0,n-1);
cout
}
NOIP2013 D1 T2火柴排隊
涵涵有兩盒火柴,每盒裝有 n 根火柴,每根火柴都有乙個高度。現在將每盒中的火柴各自排成一列,同一列火柴的高度互不相同,兩列火柴之間的距離定義為 ai bi 2 其中 ai 表示第一列火柴中第 i 個火柴的高度,bi 表示第二列火柴中第 i 個火柴的高度。每列火柴中相鄰兩根火柴的位置都可以交換,請你通...
noip2013 d1t2 火柴排隊
看不出是逆序對.感覺藥丸 首先要看出最優解就是兩個陣列均有序的時候 再對兩個陣列的下標求逆序對即可 歸併 樹狀陣列 1 include2 include3 include4 include5 include6 define modd 99999997 7using namespace std 8co...
NOIP2013D1T2 火柴排隊 題解
題目描述略 對於距離最小,其貪心策略為將兩序列公升序排序後比較。以下為簡易的證明 設對任意 a1 a2,b1 b2,第一種排布是 a1a2.b1b2.此時距離為 a1 b1 2 a2 b2 2 1 第二種排布是 a1a2.b2b1.此時距離為 a1 b2 2 a2 b1 2 2 用 1 式減去 2 ...