原创 最大全0子矩陣問題
題意:給定一個01矩陣,求: 1.最大全0正方形面積 2.最大全0子矩陣面積 -----------------------------------------我是分割線----------------------------------
原创 裝壓DP及TSP問題的學習
當n比較小的時候(<=20)有可能可以通過裝壓DP求解最優值或方案數,在狀態設計時有一維由壓縮的數表示,方便對各種情況的處理以及減少編程難度&時間複雜度。 其實爲什麼要裝壓呢?比如我們完全可以設計f[a][b][c][d][e][f][g
原创 康託展開
給定排列,求其唯一映射的排列編號: rank[a[1]]*(n-1)!+rank[a[2]]*(n-2)!....rank[a[n]]*(n-n)! int Cantor(int a[]) { int ans=0; for(int
原创 無題,需要多次複習的
(一)求一顆樹所有直徑上的所有點。 設f[i][0] 表示子樹第一長,f[i][1]表示子樹第二長,f[i][2]表示父節點到他的最長路徑,son[x]表示子樹最長路徑的兒子。 核心代碼: void dp(int x,int fa) {
原创 經典樹形DP-剪樹杈
給定一棵樹,點有顏色(黑/白),將樹分成若干部分,使得每一部分有且僅有一個黑點。 設 f[i][1]表示以i爲根的子樹,最上面的連通塊內有一個黑點的方案總數 f[i][0]表示以i爲根的子樹,最上面的連通塊內沒有黑點的方案總數 #inc
原创 C++高精度模版
#include<bits/stdc++.h> using namespace std; #define debug(x) cout<<#x<<"="<<x<<endl const int maxn = 501; struct Bign
原创 BZOJ 3589 動態樹
題意:給一棵樹,點有點權,要求支持 1.子樹點權+ 2.詢問k(k<=5)條鏈並集點權和 題目中所給鏈全部爲某點到根路徑上的一段 Sol: 子樹點權加?DFS序 再來個詢問鏈上點權和?樹鏈剖分+DFS序 k條並集點權和?觀察到k比較小,果
原创 關於樹上倍增求LCA
比較優秀的LCA寫法(位運算) int lca(int x,int y) { if(dep[x]<dep[y]) swap(x,y); int step=dep[x]-dep[y]; for(int i=0;i<=
原创 BZOJ 4012: [HNOI2015]開店 -- 動態樹分治
4012: [HNOI2015]開店 Time Limit: 70 Sec Memory Limit: 512 MBSubmit: 1463 Solved: 635 [Submit][Status][Discuss] Descri
原创 BZOJ 4202: 石子游戲 SG定理+LCT
4202: 石子游戲 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 37 Solved: 15 [Submit][Status][Discuss] Description 石子游戲
原创 BZOJ 3995 [SDOI2015]道路修建
題意:2行n列的網格圖邊有邊權,支持 1.修改一條邊權值 2.詢問區間最小生成樹 Sol: 又是你,2行n列網格圖,線段樹套路直接上 兩個區間的最小生成樹如何合併? 紅邊中小的那個一定會加上,考慮大的那個是否保留,如果保留上會形成環,刪
原创 USACO-奶牛疊羅漢--交換法貪心思想
Cow Acrobats Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4433 Accepted: 1704 Description Farmer
原创 floyd求傳遞閉包
傳遞閉包問題,我的理解就是通過一些已知的連邊求出點與點之間的關係 設f[i][j]表示i 與 j 是否聯通,f[i][j]=f[i][k]&&f[k][j] 時間複雜度O(N^3) POJ-3660 #include<cstdio> #i
原创 BZOJ 1018 SHOI2008 堵塞的交通traffic
題意:2*n的網格圖相鄰格點之間有邊,一開始所有邊壞掉了,要求完成以下操作: 1.修復一條邊 2.破壞一條邊 3.詢問兩個格點是否直接或間接聯通 Sol: 神題。。。線段樹維護連通性。感覺我寫了一天+ 一開始想線段樹維護一塊內四個角的連通
原创 BZOJ 4010 [HNOI2015]菜餚製作 拓撲排序
題意:給一個有向圖,求一個拓撲序(可能沒有),滿足編號小的儘量靠前(優先1靠前再優先2靠前...) Sol: 最近太頹廢了,,,寫點題壓壓驚 首先思考這樣一種拓撲排序的方法:把普通BFS式拓撲排序的隊列換成小頂堆,即優先放置編號小的點 這