原创 HDU 4630 No Pain No Game(離線 + 樹狀數組)

題目鏈接:Click here~~ 題意: 給一個長度爲 n 的序列,且序列元素爲 1 ~ n 的全排列。Q次詢問,每次詢問區間 [l,r] 的最大 gcd(a,b)。 解題思路: 繼續刷。 如果將區間中的每個數換做它的因子集

原创 HDU 3336 Count the string(KMP 入門)

題目鏈接:Click here~~ 題意: 給一個長爲 n 的字符串 s,求出 s 的所有前綴能在原串中匹配的總次數。 解題思路: 直接考慮很難,所以換個角度,考慮在 s 的所有子串中前綴共出現了多少次。 令 dp[i] 表示

原创 HDU 4511 小明系列故事——女友的考驗(AC自動機 + DP)

題目鏈接:Click here~~ 題意: 中文題。抽象問題:給一個有向無環圖,問從 1 號點到 n 號點的最短路徑,路徑中不能包含某些子串。 解題思路: 其實也不算難,如果能從“不能包含某些子串”聯想到AC自動機,這題基本就解

原创 HDU 3530 Subsequence(單調隊列)

題目鏈接:Click here~~ 題意: 給一個長度爲 n 的序列,找出最長的子序列滿足 子序列中的最大值和最小值 的差在區間 [m,k] 範圍內。 解題思路: 維護兩個單調隊列,分別存最小值和最大值。 利用 two poi

原创 HDU 4358 Boring counting(離線 + 樹狀數組)

題目鏈接:Click here~~ 題意: 給一顆 n 個節點的樹,每個節點有權值 wi,然後 q 次詢問,每次詢問根爲 u 的子樹有多少個 wi 恰好出現了 k 次。 解題思路: 又是對 子樹 的 操作/詢問,而且滿足區間性質

原创 => markdown 分界線

CSDN 推出 markdown 了,大讚! 以後如果有博客可以來這邊寫了, 還能練練 markdown 漲漲姿勢~

原创 FOJ 2136 取糖果(單調棧)

題目鏈接:Click here~~ 題意: 給一個長度爲 n 的序列,對於所有的 k ,詢問 min{ max{a[i] ~ a[i+k]} }。 解題思路: 對於類似 min{ max{} } 的問題,很容易想到二分,但是二分

原创 HDU 4395 D-mail(DP)

題目鏈接:Click here~~ 題意: 給 n 個數字,選取一些取它們的和 S,取和的過程中 S 不能超過2,求出最接近目標數字 D 的 S。(數字均爲 4 位小數) 解題思路: 很明顯的 dp 模型,狀態 dp[i][j]

原创 CF 280B - Maximum Xor Secondary(單調棧)

題目鏈接:Click here~~ 題意: 給一個長度爲 n 的序列,元素不重複,求 max {a[i] ^ a[j]} (a[i] 和 a[j] 爲某個區間中的最大值和次大值,區間長度任意)。 解題思路: 接上篇。 考慮雖然

原创 歐拉函數

歐拉函數:phi(n) = the number of i where gcd(i,n) = 1 and 1 <= i <= n. 解法:容斥原理。 先將 n 分解質因數,然後 phi(n) = Σphi(p_i) - Σphi(p_i

原创 HDU 4638 Group(離線 + 樹狀數組)

題目鏈接:Click here~~ 題意: 給一個長度爲 n 的序列,且序列元素爲 1 ~ n 的全排列。Q 次詢問,每次詢問區間 [l,r] 有多少段連續的數字(可重新排列)。 解題思路: 繼續刷啦啦啦。 首先可以在 O(n

原创 HDU 4778 Gems Fight!(13年杭州區域賽-I題-博弈DP)

題目鏈接:Click here~~ 題意: 有 G 種顏色的寶石,放在 B 個袋子裏(每種顏色可以放多個)。 兩人輪流選袋子(每個袋子只能被選 1 次),每次將選出來的袋子中的寶石放到 cooker 中,cooker 可能會起反應

原创 康託展開與逆康託展開

#include <stdio.h> int fac[] = {1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800}; int Cantor(int n,char* s) {

原创 HDU 4507 吉哥系列故事——恨7不成妻(數位DP)

題目鏈接:Click here~~ 題意: 中文題不解釋。 解題思路: 之前做的都是統計滿足那些性質的數的 count,這次直接蹦到統計 square sum 了。。。 先考慮如何統計 sum。 統計 sum 維護兩個值 c

原创 HDU 4294 Multiple(12年成都網絡賽-G題-BFS)

題目鏈接:Click here~~ 題意: 找一個 n 的最小倍數 x,使 x 在 k 進制下包含最少種數字。 解題思路: 搜那道題解的時候有人說很類似,就趁熱一起刷了。 假如只有一種數字,那麼我們可以在 O(N) 的時間內