原创 bzoj 1047

求字典序最小,可以想到反向做最長下降子序列,求出 fi ,以 ai 爲起始的最長上升子序列長度。 如果詢問的長度 L 大於 最長上升子序列長度,直接輸出 Impossible 。 貪心,因爲要求字典序最小,對於滿足條

原创 codeforces 516E

solution : http://codeforces.com/blog/entry/16468

原创 bzoj 3110

線段樹套線段樹,挺不錯的一道數據結構題。 先讀入所有詢問並離散化,然後在外層建 權值線段樹 , 權值線段樹的每個結點建一棵 維護區間和 的線段樹。 直接建樹空間 O(N2) 肯定會MLE,所以先建出權值線段樹,再動態加點線段

原创 NOIP 2001 數的劃分

問題描述 將整數 n 分成 k 份,且每份不能爲空,任意兩份不能相同 (不考慮順序)。 例如:n=7,k=3,下面三種分法被認爲是相同的。 {1,1,5} , {1,5,1}, {5,1,1} 問有多少種不同的

原创 cogs #743

題目鏈接 最大費用最大流 如何構圖? 設源點爲 S ,匯點爲 T 。 將所有的端點離散化, S 點向第一個點連邊,每個點向下一個點連邊,最後一個點向 T 點連邊,流量都爲 k ,費用都爲 0 。 對於每條線段,從左端

原创 SG函數

參考: http://www.cnblogs.com/frog112111/p/3199780.html http://cyan.logdown.com/posts/286252-combinatorial-games-wit

原创 uoj #3 (NOI 2014 魔法森林)

按 ai 排序,然後以 bi 爲邊權維護最小生成樹。 那麼就可以求 ai+bi 得最小值啦~ #include <cstdio> #include <cstdlib> #include <cstring> #incl

原创 zoj 1508

差分約束系統。 對於約束條件 [ai,bi] 內至少有 ci 個數。 有 sum(bi)−sum(ai−1)≥ci 即 sum(ai−1)≤sum(bi)−ci 而最短路滿足 distj≤disti+wi,j 點 dist

原创 樹分治

樹的重心: 刪掉這個節點之後 將樹分成若干棵子樹 且使得這些子樹中 點個數的最大值最小。 按樹的重心分治,可以將樹的層數控制在 log2N 的以內。 (以重心爲根處理點對計數問題,至少會將樹分成兩棵子樹。) 時間複雜度:O(

原创 LA 5031

“真正的勇士,敢於直面慘淡的人生,敢於正視淋漓的鮮血。” —–《記念劉和珍君》魯迅 平衡樹的啓發式合併。 你們自己感受一下。 如果我寫完暑假作業就來補題解。 #include <cstdio> #include <cstdl

原创 poj 3590

題目大意: 設 k 爲滿足 Pk=e 的最小的非負整數 。 構造出長度爲 n 的置換 P ,使得 k 最大, 若有多個置換 k 值相同,輸出字典序最小的。 記 pi 爲 P 的循環長度。那麼 k=lcm(p1,p

原创 sgu 242

題目大意: 有 n 個學生,k 個學校,每個學生可以選擇去一個他喜歡的學校(也可以不去學校)。 問是否存在使每個學校至少有兩個學生的方案。 網絡流,最大流。 建邊,設源點爲 S ,匯點爲 T 。 S 向每個學生連流量

原创 一道數學題

求 ∑ni=1∑ij=1gcd(i,j) 的值。 gcd(i∗d,j∗d)=d∗gcd(i,j) 設 gcd(i,j)=1 , 不大於 i 且與 i 互質的數的個數是 φ(i) 所以 ∑ni=1∑ij=1gcd(i,j)

原创 hdu 4135

求 [A,B] 內與 n 互質的數的個數。 1≤A≤B≤1015,1≤n≤109 n≤109 ,所以對 n 的質因子枚舉子集,容斥原理計算。 因爲 2∗3∗5∗7∗11∗13∗17∗19∗23∗29∗31>109 所以

原创 bzoj 1046

記矩陣爲 A ,單調隊列求出 Ar,[i−n+1,i] 內最大值和最小值。 而最大值和最小值是滿足 區間加法 的, 所以再用單調隊列求出 A[i−n+1,i],[j−n+1,j] 內最大值和最小值。 時間複雜度:O(n2)