原创 AtCoder Grand Contest 038 E - Gachapon 題解

傳送門 題目大意: 有一個隨機數生成器會隨機生成[1,N][1,N][1,N]的一個整數,第iii個數被生成的概率是Ai∑jAj\frac{A_i}{\sum_{j} A_j}∑j​Aj​Ai​​,每次調用這個生成器生成一個數,把

原创 20190903訓練記錄

Codeforces 504E 題意是給一棵樹,每個節點上一個字母,m次詢問a到b路徑的字符串和c到d路徑的字符串的lcp. n=300000,m=1000000n=300000,m=1000000n=300000,m=10000

原创 [HDU 6338] Depth-First Search

HDU 6338 題解: 首先顯然的dpdp , dp(u)=|sonu|!∏v∈sonudp(v)dp(u)=|sonu|!∏v∈sonudp(v) ,然後換根dp,求出以任意節點爲根的答案。 然後考慮根編號小於B1B1 的,直

原创 [Codeforces 956D]Contact ATC

956D 題解: 考慮兩個飛機(x0,v0)(x0,v0) (x1,v1)(x1,v1) 對於一個風速w0w0 ,第一個飛機的飛行時間是f0(w0)=x0v0+w0f0(w0)=x0v0+w0 第二個飛機的飛行時間是f1(w0)=x

原创 [AGC06D] Median Pyramid Hard

AGC06D 題解: 由於求的是中位數,和數的大小關係有關,則可以二分答案,然後將所有大於等於當前二分的數的刷成11 ,小於的刷成00 ,然後根據0101 算出的答案調整二分區間。(套路) 然後問題就被簡化成了給2n−12n−1 個數

原创 [Codeforces 981G]Magic multisets

981G 題解: 使用set維護對於每個數,有哪些區間的集合含有這個數。 然後每次詢問暴力的修改每個區間,使用線段樹維護即可。 #include<bits/stdc++.h> #define LL long long #define

原创 [Topcoder SRM 589 Division I, Level Three]FlippingBitsDiv1

傳送門 題解: 分塊暴力即可. 對於m小於n−−√n 暴力枚舉循環串然後dpdp . 對於m大於n−−√n 暴力枚舉每個循環串是否翻轉即可。 時間複雜度:O(2n√n)O(2nn) 代碼: #include<bits/stdc++.

原创 [HDU 6305]RMQ Similar Sequence

HDU 6305 題解: 首先B數列一定是一個下標滿足二叉搜索樹,值滿足大根堆的東西。 先考慮B數列滿足這個條件的概率。 首先根的元素一定是A數列中最大的(第二關鍵字是下標最小),考慮B數列中對應的元素。 這個元素是最大的概率是1

原创 [ZOJ 2617/UVALive 3488] Edison

UVALive 3488 題解: 性質:對於連續的R次同樣的操作,可以變成一次操作。 解法一:對原序列分塊,然後暴力操作即可。時間複雜度O(SC−−√)O(SC) 解法二:使用平衡樹維護序列。 時間複雜度O(Slogn+n)O(Sl

原创 [HDU 6331]Walking Plan

HDU 6331 題解 #include<bits/stdc++.h> #define LL long long #define ull unsigned long long #define ULL ull #define mp make

原创 [HDU 6314] Matrix

HDU 6314 題解 寫完後看了眼題解,發現題解不靠譜. fa,j=1−∑j−1k=aCkjfa,j=1−∑k=aj−1Cjk 此處應爲 fa,j=1−∑j−1k=afa,kCkjfa,j=1−∑k=aj−1fa,kCjk ​​代碼

原创 [Codeforces 883D]Packmen Strike Back

883D 題解: 特殊處理只有一個“P”“P” 的情況。 對於有兩個以上的“P”“P” ,第一問的答案一定是所有“∗”“∗” 的個數。 顯然第二問的答案具有單調性,所以二分答案,對於一個長度lenlen ,只要從左到右分配方向分幾種

原创 [HDU 6327]Random Sequence

HDU 6327 題解 #include<bits/stdc++.h> #define LL long long #define ull unsigned long long #define ULL ull #define mp mak

原创 [URAL 1148] Building Towers

URAL 1148 題解: 考慮樸素的dpdp , dp(i,j,k)dp(i,j,k) 表示考慮到第i層,當前層放jj 個塊,已經放了kk 個塊的情況數量. 空間約爲8×60×70×2500bytes≈80MB8×60×70×25

原创 [SGU 475] Be a Smart Raftsman

SGU 475 題解: 由於n≤10n≤10 , 所以顯然的解法是狀態壓縮dpdp , dp(i,mask)dp(i,mask) 表示走到第ii 個河岸,船上的人集合是maskmask 的最少時間花費。 轉移方程: dp(i,