原创 最大全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式拓撲排序的隊列換成小頂堆,即優先放置編號小的點 這