關於資訊學奧賽構造在數學的一些思考記錄

2022-06-20 06:18:15 字數 1100 閱讀 8724

最近學校 c 班老師給了一道題,在這裡聊聊。

給你 \(100\) 個數 \(a_1,a_2,a_3\dots a_,a_\)。這 \(100\) 個數滿足:

求證:對於任意滿足條件的數列 \(a\),從中取 \(50\) 個數,至少有一組能滿足選出的 \(50\) 個數的和與 \(\frac 1 2\) 的差不超過 \(\frac 1 \)。

我們考慮用類似貪心的微調法。首先我們可以把數字分為 \(50\) 組,分別以數對的方式記錄下來為:

\[t_1=(a_1,a_2)

\]\[t_2=(a_3,a_4)

\]\[t_3=(a_5,a_6)

\]\[\vdots

\]\[t_i=(a_,a_)

\]\[\vdots

\]\[t_=(a_,a_)

\]接著,我們記 \(max(t_i)\) 為 \(t_i\) 這個二元組中最大的那個數。\(min(t_i)\) 同理。

那麼我們有:

\[\sum\limits_^ min(t_i)\leq \frac\leq \sum\limits_^ max(t_i)

\]假設我們現在選擇的 \(50\) 個數是 \(min(t_1),min(t_2)\dots min(t_)\),記目前 \(50\) 個數的和為 \(sum\),只要 \(|sum-\frac 12|>\frac\),我們就把其中乙個 \(min(t_i)\) 換成 \(max(t_i)\)。這樣每次 \(sum\) 的變化量就在 \(0\) 到 \(+\frac\) 之間。因為 \(\sum\limits_^ min(t_i)\leq \frac\leq \sum\limits_^ max(t_i)\),所以我們在微調時一定有一次滿足操作前,\(sum\leq \frac\),微調後 \(sum\geq \frac\)。而微調前後 \(sum\) 的差值 \(\leq \frac\),因此微調前後至少有一組 \(50\) 個數是滿足條件的,得證。

我們這道題的解題思路最重要的就是分組的思想,這樣減小了兩項之間差 \(\leq \frac\) 這個條件的影響。這在資訊奧賽中應該是有一定應用的,在構造題中是乙個好方法。通過對某乙個條件進行分析,用某種手段,比如分組,在弱化這一條件帶來的影響。這個方法值得學習一下。

例題自己找

資訊學競賽中的一些經典思維 題

倍增字面上意思是 成倍地增加。當模擬乙個過程時,一步一步進行太慢,考慮把模擬的步數二進位制分解 經過一些預處理,每次可以模擬 2 i 步,從而達到優化複雜度的目的。倍增主要模型有rmq,lca等。例題給出乙個長度為 n 的環和乙個常數 k,每次可以從第 i 個點跳到第 i k mod n 1 個點,...

資訊學奧賽一本通C 語言 1062 最高的分數

題目描述 孫老師講授的 計算概論 這門課期中考試剛剛結束,他想知道考試中取得的最高分數。因為人數比較多,他覺得這件事情交給計算機來做比較方便。你能幫孫老師解決這個問題嗎?輸入 輸入兩行,第一行為整數n 1 n 100 表示參加這次考試的人數.第二行是這n個學生的成績,相鄰兩個數之間用單個空格隔開。所...

資訊學奧賽一本通 1184 明明的隨機數

時間限制 1000 ms 記憶體限制 65536 kb 提交數 7456 通過數 4737 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 100 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。...