原创 石子合併 BZOJ - 3229

題目傳送門 題意:石子合併問題一般來說都是O(N^3)的複雜度,如果用四邊形不等式優化的話可以使時間複雜度降低到O(N^2)的複雜度,但是這個題目的數據範圍是40000,所以這個題要用到GarsiaWachs算法,可以使時間複雜度降到O(

原创 絕世好題 BZOJ - 4300

題目傳送門 思路:這個題如果用O(N^2)的算法的話會超時,所以我們可以對每一個數字的每一位數字進行操作,這樣可以在O(N*logN)的時間複雜度中完成。 #include <algorithm> #include <cmath> #in

原创 完全平方數 BZOJ - 2440

題目傳送門 思路:這個題要求的是第K個非完全平方數且沒有完全平方數因子的數,我們可以將這個問題轉換爲求這個區間的所有完全平方數且沒有完全平方數因子的數的數量,這樣就可以通過二分的方法來求解,具體的數量的可以通過容斥原理來求得,而此時可以用

原创 Unidirectional TSP UVA - 116

題目傳送門 思路:一個點可以往下延伸的狀態只有三種,我們可以得出一個遞推公式dp[i][j] = min(dp[i - 1][j - 1], dp[i][j - 1], dp[i + 1][j - 1]),dp[i][j]表示在(i, j

原创 遊戲 BZOJ - 1854

題目傳送門 思路:一個二分圖最大匹配問題,但是這個題emmm,因爲memset用的次數太多被卡常數了,然後就看到了一個神奇的做法,可以只清空一次數組的黑科技做法。 #include <algorithm> #include <cmath>

原创 中位數圖 BZOJ - 1303

題目傳送門 思路:這個題我們先預先處理一個sum數組表示這個數字的左邊有多少個大於m的數字減去小於m的數字的個數,然後我們在預處理一個數組表示,有多少個在數字m的左邊有多少個值爲sum[i]的個數,然後就可以在一個O(N)的時間複雜度進行

原创 能量採集 BZOJ - 2005

題目傳送門 思路:這個題目可以用容斥來做 我們令f[x]爲gcd(i, j) = x的個數 令g[x]爲i, j因子爲x的個數(n / x) * (m / x) 我們再把其中最大公約數不是x的減掉就是要求的答案了 #include

原创 粉刷匠 BZOJ - 1296

題目傳送門 思路:這個題先對每一塊木板進行DP,dp[i][j]代表前i塊木塊用j次粉刷的符合要求的最大值,然後在對每一個木板進行一個揹包DP就可以了。 PS:這個題目不需要用文件輸入輸出 #include <algorithm> #i