28屆寧波市中小學生程式設計競賽複賽 初中組

2021-07-27 09:13:55 字數 915 閱讀 1535

**於寧波市程式設計競賽複賽(初中組)

n≤500,000,顯然對於這麼大的n,o(n^2)的解法都不夠。那麼考慮o(n)或者o(n*lg(n))的解法,動態規劃?貌似可行,但狀態怎麼表示?左對齊?右對齊?除此,要怎麼進行轉移呢,畢竟a和b的範圍也相當大,即便進行hash,最多也有500,000?

繼續分析發現,題目中指出,每一處對齊都只得1分,這說明在左右不可能同時對齊的情況下,左對齊和右對齊的收益是一樣的。那我們不妨讓所有小球都盡量左對齊好了,直到某一處不能左對齊便從後乙個開始繼續左對齊,反證法可以證明這樣能得到最大收益。

對齊實際上是保持高度相等,例如對於第一根繩子上的右小球,可以保持的高度範圍是[0,a1+b1],第二根繩子的左小球可以保持的高度範圍是[0,a2+b2]。

要是這兩個小球保持高度相等,那麼我們必須保證他們的高度在[0,min(a1+b1,a2+b2)]範圍內,相應地,第二根繩子的右小球變化範圍就必須是[a2+b2-min(a1+b1,a2+b2),a2+b2]…..依次類推,每兩個相鄰小球可以對齊便計1分,不能對齊便跳過,下乙個繼續對齊。

#include 

#include

#include

#include

#include

using

namespace

std;

const

int maxn=5e5+15;

int l[maxn], r[maxn];

bool ok(int s1,int t1,int s2,int t2)

int main()

else

// printf("%d %d %d\n",ans, mi, ma);

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

return

0;}

31屆寧波市中小學生程式設計競賽複賽 初中組

於寧波市程式設計競賽複賽 初中組 n 5000,m n,顯然o n 3 的複雜度不能接受,那麼考慮o n 2 或者o n 2 lg n 的解法。最少需要消耗多少能量,看起來是乙個好像具有最優子結構的問題,那麼嘗試是否能用動態規劃來求解。仔細分析,可以發現最後乙隻猴子最優情況下肯定是爬上最後一棵樹,那...

30屆寧波市中小學生程式設計競賽複賽 初中組

於寧波市程式設計競賽複賽 初中組 單個班級內,最優排列方案的不整齊度 max ai min ai 2,即按高度進行排序,此時應當最優 感覺是個不等式證明?那麼排列方案的優劣與羊的具體數量無關,與各只羊的高度無關,至於最大高度與最小高度的差值有關。讓所有小羊按高度排列,此時可以將整個佇列看做一條線段,...

中小學生程式設計

近幾年以來,發布了多個推廣少兒程式設計教育的紅本政策,市面上也湧出了一大批少兒程式設計教育 機械人程式設計教育的機構。格物斯坦認為 大多數家長都不太名二者之間有什麼區別,很多家長感覺是機械人程式設計更高大上,但又不知道是不是這麼一回事。其實,少兒程式設計類產品,大體上分為兩類 純軟體類或軟硬體結合類...