1. 程式人生 > >2018 年“三盟科技杯”中國大學生程序設計競賽(湖南)

2018 年“三盟科技杯”中國大學生程序設計競賽(湖南)

覆蓋 這份 i+1 策略 字符串 復雜度 引用 給定 現在

2018 年“三盟科技杯”中國大學生程序設計競賽(湖南)

A. Easy h-index

題目描述:給出一個數組\(a_i\),求最大的\(h\),使得至少有\(h\)個數不少於\(h\)

solution
模擬。

時間復雜度:\(O(nlogn)\)

B. Higher h-index

題目描述:寫論文,當一份論文花費了\(x\)小時時,這份論文會得到\(ax\)個引用,\(a\)是給定的常數,\(x\)必須為正整數,每份論文都可以被之後自己寫的論文引用,現在有\(n\)個小時寫論文,求最大的\(h\),使得至少有\(h\)份論文得到的引用個數不少於\(h\)

solution
\(n \leq a\)

時,答案為\(n\)
\(n > a\)時,若要使答案為\(h\),則采取貪心策略:每份論文只用一個小時,要保證前\(h\)份論文的引用個數不少於\(h\),則\(h-a+h \leq n\),所以\(h_max=\frac{1}{2}(a+n)>n\),所以最終答案為\(\frac{1}{2}(a+n)\)

時間復雜度:\(O(1)\)

C. Just h-index

題目描述:給出一個數組\(a_i\),每次詢問一個區間\([L, R]\),求最大的\(h\),使得\([L, R]\)內至少有\(h\)個數不少於\(h\)

solution
可持久化線段樹。

時間復雜度:\(O(qlogn+nlogn)\)

F. Sorting

題目描述:給定\(n\)個三元組\((a_i, b_i, c_i)\),求一個字典序最小的排列\(p_i\),使得
\[\frac{a_{p_{i-1}}+b_{p_{i-1}}}{a_{p_{i-1}}+b_{p_{i-1}}+c_{p_{i-1}}}\leq\frac{a_{p_i}+b_{p_i}}{a_{p_i}+b_{p_i}+c_{p_i}}\]

solution
按題目要求排序。
時間復雜度:\(O(nlogn)\)

G. String Transformation

題目描述:給定兩個字符串\(S, T\)\(S, T\)由‘a, b, c‘組成,可以對字符串\(S\)

進行操作,每次刪除或插入‘aa‘, ‘bb‘, ‘abab‘,問\(S\)是否能變成\(T\)

solution
操作中沒有‘c‘,也就是說可以以‘c‘為間隔拆分字符串,通過手工計算,可以知道字符串中的‘ab‘, ‘ba‘可以互相替換,因為‘ab‘->‘abaa‘->‘ababba‘->‘ba‘,反過來‘ba‘就可以變成‘ab‘,所以只要每一段的‘a‘, ‘b‘的數目的奇偶性分別相等,則\(S\)可以變成\(T\)

時間復雜度:\(O(n)\)

I. Longest Increasing Subsequence

題目描述:給定一個數列\(a_i \leq n\),設\(f(x)\)表示將數列裏的\(0\)替換成\(x\)後,最長嚴格上升子序列的長度,求\(\sum_{i=1}^n if(i)\)

solution
顯然,\(f(x)\)要麽等於原最長嚴格上升子序列,要麽加一。所以只需要求出哪些數能讓答案加一即可。所以先預處理出原序列的最長嚴格上升子序列,若\(i\)\(j\)是最長嚴格上升子序列的相鄰兩位,且\(i\)\(j\)之間有\(0\),則\([a_i+1, a_j-1]\)內的數能使答案加一。這個可以從左到右掃一遍,然後記錄最長嚴格上升子序列的某一位的最小的數是什麽即可(這個數的位置的右邊必須有\(0\)

時間復雜度:\(O(nlogn)\)

J. Vertex Cover

題目描述:給出一個\(n\)個點的完全圖,編號為\(0\)~\((n-1)\),點權為\(2^i\)。開始時\(A\)選定若幹條邊,然後\(B\)選擇若幹個點來覆蓋這些邊(每條邊的端點至少有一個被選),\(B\)選的點的點權是最小的。求出\(A\)有多少種選擇方案使得\(B\)的點權和為\(k\)

solution
一個點能被\(B\)選上,必定是這個點與另一個點權比它大的點的連邊至少有一條被選上,而且該點與比它小的點的連邊都沒有被選上。按照這個即可算出答案。

時間復雜度:\(O(n)\)

K. 2018

題目描述:給定\(a, b, c, d\),求出滿足\(a\leq x \leq b, c\leq y \leq d, xy=2018\)的數對\((x, y)\)的個數。

solution
容斥原理。

時間復雜度:\(O(1)\)

2018 年“三盟科技杯”中國大學生程序設計競賽(湖南)