原创 2019牛客暑期多校訓練營(第七場)E:Find the median(離散化區間+樹狀數組+二分)

【題解】 題意:原始數組爲空,給定n個操作,每個操作給出一個Li,Ri,表示每次添加Ri-Li+1個數字Li,Li+1,Li+2...Ri-1,Ri到數組裏,輸出中位數。中位數表示按大小排序排在中間向下取整的那個數。 思路:離散化左右端點

原创 2019牛客暑期多校訓練營(第七場)C:Governing sand(暴力 or 樹狀數組+枚舉)

【題解】 離散化高度和花費,建立以價格爲下標的前綴數量和與前綴花費和的樹狀數組,從高到低按高度處理,每次記錄加上必定需要被下一個高度刪去的當前高度的所有樹木的花費,然後二分處理出需要砍掉的花費儘可能小的區間,最後算出花費更新答案即可。 【

原创 2019牛客暑期多校訓練營(第七場)H:Pair(數位dp)

【題解】 題意:給定ABC,x∈[1,A],y∈[1,B],輸出滿足x&y>C或者x^y<c的(x,y)的對數。 思路:令dp[len][c1][c2][lim1][lim2]表示在二進制下,當前長度爲len,第一個條件的狀態爲c1,第二

原创 2019杭電暑期多校第五場 B:three arrays(01字典樹)

【題解】 題意:給定兩個數組a和b,重排數組使得得到的數組c[i]=a[i]^b[i]字典序最小。 題解:對於兩個數組從高位到低位建立兩個01字典樹,然後從高位到低位走,因爲要求最小異或值,所以如果下一位兩者有相同的就走相同的。最後排一下

原创 字典樹與01字典樹 詳解(簡單易懂,包學包會)

【鎮樓】   不滿足於粗淺的表面瞭解字典樹嗎,今天!由我給大家帶來!字典樹與01字典樹的解析!! 目錄 【引入】 【字典樹】 【01字典樹】 【引入】 字典是幹啥的?查找字的。那麼字典樹顧名思義,自然也就是起查找作用的一種樹,查找的是啥?

原创 2019杭電暑期多校第五場 A:fraction(輾轉相除法)

【題解】 由於  ,我們引入一個參數y,使得  ,於是我們可以列出不等式   ,其中  和  都是已知的值,我們要求最小的b滿足上面的式子。 這是個經典的輾轉相除法問題。 如果這個區間跨越了一個整數d(且是最小的),那麼  ,因爲b不可能

原创 2019杭電暑期多校第五場 D:equation(數學)

【題解】 對於絕對值不同的區間去絕對值後式子不同,即會有(n+1)個求解區間,分別求解即可。 代碼借鑑於2019 杭電多校(第五場) 【代碼】 #include <bits/stdc++.h> using namespace std;

原创 2019杭電暑期多校第五場 E:permutation 1(思維)

【題解】 思路:因爲詢問只有1e4的大小,可以知道最多隻與後8位有關,那麼大於8的顯然最小的排列爲n,1,2,3,....所以我們可以跑出後8位的排列,結構體排序輸出即可。 【代碼】 #include<bits/stdc++.h> us

原创 2019牛客暑期多校訓練營(第六場)D:Move(multiset+枚舉)

【題解】 隊友各種dp貪心優先隊列也沒搞出來,想不到是暴力的姿勢不夠帥... 題意:用k個箱子裝n個物品,問最小的箱子容量的最大值是多少。 思路:枚舉,判斷。 【代碼】 #include<bits/stdc++.h> using nam

原创 2019牛客暑期多校訓練營(第六場)B:Shorten IPv6 Address(貪心)

【題解】 題意:給定一個128位的二進制串,要求輸出化簡後的最短且字典序最小的串。 思路:4位二進制對應一位十六進制,所以轉化和去除前導0的操作很好做。對8個字段進行的化簡操作如下過程: 首先考慮最短,其次考慮字典序最小。因爲考慮最短,所

原创 2019牛客暑期多校訓練營(第六場)J:Upgrading Technology(貪心+思維)

【題解】 首先找到一個都能夠達到的最小的等級 j ,將所有技能都達到一個大於等於j級的最大收益的等級,再減去一個增加收益最小的到等級 j ,以保證 j 等級的是所有能達到的最小等級。 【代碼】 #include<bits/stdc++.

原创 2019杭電暑期多校第二場 K:Keen On Everything But Triangle(靜態主席樹)

【題解】 首先考慮區間最大的三個數能否形成三角形,如果不能,考慮區間第二大、第三大、第四大的三個數,以此類推,直到能形成三角形。由三角形最小的兩條邊大於第三邊的性質可知,只要考慮區間的前44大的數即可 (最壞情況下區間前幾大數形成了斐波那

原创 2019牛客暑期多校訓練營 題解

【第一場】 A:Equivalent Prefixes(單調棧+思維) H:Second Large Rectangle(前綴和+思維) 【第二場】 F:Partition problem(dfs) H:Second Large Rect

原创 2019杭電暑期多校訓練營 題解

【第一場】 B:Operation(貪心+前綴線性基求最大異或和) D:Vacation(思維+枚舉) E:Path(最短路+最小割) 【第二場】 E:Everything Is Generated In Equal Probabilit

原创 2019牛客暑期多校訓練營(第五場)G:subsequence 1(遞推)

【題解】 題意:輸出S中所有大於T的數字子序列的個數。 思路:首先考慮到如果選取的數字子序列的長度大於m並去除前導0的干擾,那麼肯定成立。所以比較複雜的是長度相等的情況,這裏我用了遞推。 dp[i][j] 表示當S推導到位置 i 時,長度