原创 【HDU 5698】 瞬間移動
【題目鏈接】 點擊打開鏈接【算法】 用f[i][j]表示走到(i,j)這個位置有多少種方案,因爲走到(i,j)這個位置,上一步一定在它左上角的矩形中,所以, f(i,j) = sig
原创 【BZOJ 3211&3038】 花神遊歷各國 & 上帝造題的七分鐘2
【題目鏈接】 【BZOJ 3211】 點擊打開鏈接 【BZOJ 3038】 點擊打開鏈接【算法】 線段樹 開根操作直接開到葉子節點,注意當區間中所有數都是0或
原创 【USACO 2010FEB】 slowdown
【題目鏈接】 點擊打開鏈接【算法】 dfs序 + 線段樹 樹鏈剖分同樣可以解決這個問題【代碼】 #include<bits/stdc++.h> using
原创 【SDOI 2008】 遞歸數列
【題目鏈接】 點擊打開鏈接【算法】 矩陣乘法優化遞推 由於本博客不支持數學公式,所以不能將矩陣畫出來,請諒解!【代碼】 #include<bits/stdc++.h>
原创 【BZOJ 3732】 Network
【題目鏈接】 點擊打開鏈接【算法】 求出這個圖的最小生成樹,對於每次詢問,用倍增法求出最近公共祖先,查詢最小生成樹上兩點路徑上的最大值 算法的正確性? 假設x和
原创 5月19日省中提高組題解
【Problem A】 Square【題意】 給一個n * n的01矩陣,要求一個最大的全1正方形子矩陣,輸出它的面積 N <= 1000 【題解】 樸素的做法是先求二維前綴和,然後暴
原创 【LNOI 2014】 LCA
【題目鏈接】 點擊打開鏈接【算法】 考慮求lca(x,y)的深度 我們可以將從根到x路徑上的點都打上標記,然後,詢問y到根上路徑的權值和 那麼,求sigma(de
原创 【POJ 1330】 Nearest Common Ancestors
【題目鏈接】 點擊打開鏈接【算法】 倍增法求最近公共祖先【代碼】 #include <algorithm> #include <bitset> #include <cctype> #in
原创 【HDU 4547】 CD操作
【題目鏈接】 點擊打開鏈接【算法】 分四種情況討論 : 1. 當前目錄和目標目錄是同一目錄,不需要變換,答案爲0 2. 當前目錄是目標目錄的祖先,答案爲當前目錄的深度
原创 【HDU 3652】 B-numbers
【題目鏈接】 點擊打開鏈接【算法】 數位DP f[i][j][k][l]表示i位數,第一位爲j,除以13的餘數爲k,是/否包括子串“13”的方案數 當然,我們也可以
原创 【POJ 3233】Matrix Power Series
【題目鏈接】 點擊打開鏈接【算法】 要求 A^1 + A^2 + A^3 + ... + A^k 考慮通過二分來計算這個式子 : 令f(k) = A^1 + A^2
原创 【BZOJ 4353】 Play with tree
【題目鏈接】 點擊打開鏈接【算法】 樹鏈剖分 對於線段樹的每個節點,記錄這段區間的最小值,最小值的個數,值爲0的個數,此外,還要維護兩個懶惰標記【代碼】 本題細節很
原创 【POJ 1470】 Closest Common Ancestors
【題目鏈接】 點擊打開鏈接【算法】 離線tarjan求最近公共祖先【代碼】 #include <algorithm> #include <bitset> #include <cctype
原创 【HDU 1588】 Gauss Fibonacci
【題目鏈接】 點擊打開鏈接【算法】 要求 f(g(0)) + f(g(1)) + f(g(2)) + ... + f(g(n-1)) 因爲g(i) = k *
原创 【BZOJ 5165】 樹上倍增
【題目鏈接】 點擊打開鏈接【算法】 樹上倍增,時間複雜度 : O(qklog(n))【代碼】 #include<bits/stdc++.h> using namespace std;