原创 ACdream1171 下界轉上界-最大費用可行流

每一行/列至少取A/B的最小費用=SUM-每一行/列至多取m-A/n-B的最大費用 由於是求可行流而不是最大流,所以添加超級源匯,在源匯上連一條分流的路 #include<stdio.h> #include<iostream> #incl

原创 poj 3557 Map Generator 概率

巧妙的是枚舉的方法,對於新的一個點i,我們知道整個圖是不連通的,那麼i所在的連通圖一定與某個點不連通,所以枚舉i所在的連通圖的大小 #include <cstdio> #include <cstdlib> #include <cstrin

原创 hdu5001 鞍山賽區網絡賽 E題

從一個狀態到下一個狀態是存在一個轉移矩陣的,但是轉移矩陣應該不如直接模擬的複雜度低 每輪模擬後把特定點k清0,最後把k點以外的各個點的概率加和 原本考慮到矩陣的收斂性,添加了一個收斂性判斷(精度要求比較高才能過),1.8s 後來去掉收斂性

原创 hdu4888 Redraw Beautiful Drawings 多校第三場 網絡流

首先是否有解可以通過impossible判定,即從原點到各行流量爲各行的和,從各列到匯點流量爲各列的和,從每個原點到每個匯點的流量表示某個點的值,所以流量爲K。跑一邊網絡流,如果最大流=總和,有解。 有解之後的判定,標程是用的殘餘網絡的進

原创 hdu 4089 Activation 概率dp 消元

雖然是求概率,但是和倒着求期望有些類似,使用的是全概率公式dp[i][j]表示的是從這一點到達目標點的概率 圖中有環,只能消元,成環有一定的規律,先求dp[i][i] 參考 http://www.cnblogs.com/kuangbin/

原创 用getchar()快速輸入

int input() { char ch=' '; while(ch<'0'||ch>'9')ch=getchar(); int x=0; while(ch<='9'&&ch>='0')x=x*10+ch

原创 poj 1180 Batch Scheduling 斜率優化dp

dp使用的過程中要做到無後效性,每一個值包含它對後面的影響 #include<stdio.h> #include<iostream> #include<string.h> #include<queue> #include<algorith

原创 hdu 4912 Paths on the tree lca+貪心

直線型的樹會爆棧,手動擴棧:#pragma comment(linker, "/STACK:102400000,102400000") 通過dfs離線求lca,把所有的查詢都存儲下來(分別用點索引和用查詢的編號索引),通過一次dfs把所有

原创 poj 1260 Pearls 斜率優化dp

一維的比較簡單的斜率優化dp #include<stdio.h> #include<iostream> #include<string.h> #include<queue> using namespace std; int dp[105

原创 hdu 4870 Rating 多校第一場 概率dp

 概率方程很好寫,但是有環 可以看出來dp[0][k]-dp[k][k]是一組 分組求,可以設參數也可以高斯消元 #include<stdio.h> #include<iostream> #include<string.h> #inclu

原创 CF 148D Bag of mice 概率DP

dp[i][j]表示人面對這個狀態獲勝的概率(這裏不是先手),用全概率公式搞 #include<iostream> #include<algorithm> #include<iostream> #include<stdio.h> #inc

原创 poj 2151 Check the difficulty of problems 概率dp

把存在轉化爲所有 p=1-!p #include<iostream> #include<algorithm> #include<iostream> #include<stdio.h> #include<string.h> #include

原创 poj 3716 貝葉斯公式的應用

參考http://hi.baidu.com/bfcdygoporbjuxr/item/569897ddc1fc561d21e2503f #include<stdio.h> int main() { int T,x,y; scanf("

原创 uva 12594 斜率優化dp

分段類型的dp,只不過求一個段的值略微麻煩 #include<stdio.h> #include<iostream> #include<string.h> #include<queue> #include<string.h> using

原创 hdu 4876 ZCC loves cards 多校第二場 暴力+剪枝

主要步驟是枚舉C(n,k)的所有可能,然後枚舉A(k,k)的所有可能,然後對每種可能進行判斷 在枚舉C(n,k)之後用到了一個較強的剪枝(由於數據隨機,所以剪枝效果很好),就是先判斷這k個數的所有組合的異或和能否超越之前求出的最優解,如果