HDU 3251 Being a Hero 網路流 最小割

/*題意:給你f個可選城市,每個城市都有其價值w0,國王的城市在1,現在國王不想見到你(國王不想通過某種路徑到達你選定的城市)——將你選的若干城市隔離出去,每條道路隔斷都需要花費w1,現在問你可以達到的最大價值並要求輸出你割斷的路的編號題解:網路流模型題,將所有可選點連入超級匯點,求出最小割(等於最大流),最大價值為所有可選點的價值和減去最小割我們預設最小割靠近源點的為左側,靠近匯點為右側所有的割邊的求法:最後一次求增廣路的過程中,匯點不可達,此時從源點可增流的點都在記錄路徑的數組Qu裡面枚舉數

712 – S-Trees

其實就是劉汝佳書上的一道題改了一點而已,類似於類比題,就是看題麻煩點,其實意思很簡單的,一遍AC#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(){ //freopen("a.txt","r",stdin); int n,i(1); char str[1000010]; while(scanf("%d",&n)!

POJ 2396 Budget 帶下界的最大流 Dinic

參考:http://hi.baidu.com/%CD%F4%BD%ADwangjiang/blog/item/aa3bc8ec3d549edbb31cb1a3.html http://apps.hi.baidu.com/share/detail/31832477題意:現在有一個n*m的方陣,方陣裡面的數字未知,但是我們知道如下約束條件:            1> 每一行的數位和             2> 每一列的數位和             3>

HDU3529 Bomberman – Just Search!重複覆蓋DLX

 Bomberman - Just Search!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 328 Accepted Submission(s): 158Problem DescriptionBomberman has been a very popular game ever since it was released. As you

樹狀數組模版

struct bit{ int c[maxn] ; void init(){ memset(c , 0 ,sizeof(c)); } int lowbit(int x){ return x&(-x); } void add(int x ,int d){ //在x處加上d for( ; x < maxn ; x+=lowbit(x)) c[x]+=d ; }

HDU 3760 Ideal Path 最短路spfa+BFS 字典序最小的最短路

/*題意:給定無向圖(有重邊)每條邊有一種顏色,邊權為1,讓你找到從1到n的最短路,並且經過的邊的顏色組成的序列的字典序最小。解答:1 分別spfa求出所有點到1和n的最短路d[0][i],d[1][i](可能經過的邊u-v滿足d[0][u]+1+d[1][v]=d[0][n])。 2 bfs搜尋最小的字典序序列,找出C[step]的最小顏色序號*/const int M=100009;const int N=400009;const int

HDU 3964 Find The Simple Circle

/*在一個有向圖中找出所有的環,按字典序輸出解法:以每個點為起點dfs,搜尋u->v時如果v是已經訪問的點,那麼必然有v->u->v的環一直在糾結怎麼排序,怎麼判重。其實,在搜尋點i後,ins[i]不清空標記就行了,因為如果後續有環經過i,那麼這個環必然是重複的(從i搜尋的時候必然可以搜尋到)。*/#include<iostream> #include<cstdio> #include<cstring>

HDU 3234 Exclusive-OR 並查集變形

/*轉自:http://www.cppblog.com/Yuan/archive/2010/09/02/125667.html?opt=admin稍許改寫 有n(n<=20000)個未知的整數X0,X1,X2Xn-1,有以下Q個(Q<=40000)操作: I p v :告訴你Xp=v I p q v :告訴你Xp Xor Xq=v Q k p1 p2 … pk : 詢問 Xp1 Xor Xp2 .. Xor Xpk, k不大於15。

HDU 3599 War 求最短路+最大流

題目描述:在一個包含有N個點的無向圖中求出從標號為1到N的邊不相交的路徑,點可以相交。解題報告:先求一遍最短路,能滿足從1到n是最短路的邊一點滿足d[j]==d[i]+w[i][j](d[i]為點1到點i的最短路,w[i][j]為i到j的邊權)   把這樣的i,j在流網路中建一條邊權為1的有向邊;最後以1為源,n為匯求一次最大流,這樣就是無重邊的最短路的數目了#include<iostream>#include<cstdio>#include<cstring>

HDU 3231Box Relations 拓撲排序

/*分別對x,y,z topsort就ok了注意有公用部分的時候的建邊*/#include <iostream>#include <cstdio>#include <cstdlib>#include <string>#include <cstring>#include <map>#include <vector>#include <cmath>#include<queue>using

二分圖帶權匹配問題

出處:http://www.byvoid.com/blog/match-km/#respond[二分圖帶權匹配與首選]什麼是二分圖的帶權匹配?二分圖的帶權匹配就是求出一個匹配集合,使得集合中邊的權值之和最大或最小。而二分圖的首選則一定為完備匹配,在此基礎上,才要求匹配的邊權值之和最大或最小。二分圖的帶權匹配與首選不等價,也不互相包含。我們可以使用KM演算法實現求二分圖的首選。方法我不再贅述,可以參考tianyi的講解。KM演算法可以實現為O(N^3)。[KM演算法的幾種轉化]KM演算法是求最大權

poj 3850 Simple Polygon

/*題意:給定一些點,求一個點的序列,按照這個序列連接點(首尾也相連)使得形成一個多邊形(既任意連線和其他線不想交)直接極角排序就好了,注意共線的情況,除了在起始位置距離極點小的在前,其他位置距離極點遠的在前*/#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> const int MAXN = 2009; const double eps =

HDU 3756 Dome of Circus 三分

/*底面為xy平面和軸為z軸的圓錐,給定一些點,使得圓錐覆蓋所有點並且體積最小點都可以投射到xz平面,問題轉換為確定一條直線(交x,z與正半軸)使得與x的截距r和與z軸的截距h滿足h*r*r最小。三分,對於確定的h可以找到最佳的r,並且h*r*r的曲線必定只有一個極小值*/struct po{ double x,y;}p[10005];const double eps=1e-9;double Y;int n;double makeR(double h){ double R=0;

POJ 2481Cows 樹狀數組

/*參考:http://hi.baidu.com/acfordream/blog/item/64b1527f7a5398f90ad187f6.html這個題大概是計算,一個區間會被多少區間覆蓋的問題:標準做法:套用別人寫的給定 n 個區間 (l, r),問每個區間被多少個另外的區間所包含。包含的定義 (l1, r1), (l2, r2),如果 l1 <= l2 < r2 <= r1 && (l1, r1) != (l2, r2),則 (l1, r1) 包含

POJ 3842 An Industrial Spy

/*篩出10000000內的素數顯然是不可行的;篩出3400內的素數來檢測10000000以內的數就ok了另外已經搜尋過的數用used標記,下次碰到標記過的就不在判斷,剪掉很多。*/#include <cstdio> #include <cstdlib> #include <string> #include <cstring> #include <map> #include <vector> #include &

HDU 3986 Harry Potter and the Final Battle

/*題意:在一張圖上刪去一條邊,使得從1到n的最短路最長剛開始枚舉要刪去的邊x,求最短路,複雜度是m*n*log(n);果斷tle了後來想想只要在不刪邊的情況下求得最短路,記錄最短路經過的邊,然後枚舉這些邊中的一條為刪去的邊求最短路,使得這個值最多即可很顯然,刪去的邊不是原先最短路上的邊最短路沒有變,不會有影響,所以不必枚舉*/#include <cstdio>#include <iostream>#include <memory.h>#include<

10340 – All in All

描述:從t字串中尋找s字串,查到,就輸出Yes,否則,輸出No#include <cstdio>#include <cstdlib>#include <cstring>char s[10010],t[1000010];int main(){ //freopen("a.txt","r",stdin); while(scanf("%s%s",s,t)!=EOF) { int len_s=strlen(s),len_t=strlen(

10562 – Undraw the Trees

這道題不是二叉樹形式的,沒法建二叉樹,不過可以通過建二叉樹的方法來做,不過這道題剛開始就考慮錯了,以為只有字母是節點,其實還包括數字等字元,結果交了好幾次wa……可惜啊#include <iostream>#include <cstring>#include <cstdio>using namespace std;void dfs(char s[210][210],int row,int clow,int len){ int k,l; for(

Dancing Link 精確覆蓋模版

#include<cstdio>#include<cstring>#include<cmath>const int Row=9;const int MAX_COLOUMN = Row*Row*4+2;//最多出現列數const int MAX_ROW = Row*Row*Row+2;//最多出現的列數 int cnt[MAX_COLOUMN];//cnt[i]統計第i列1的個數int most,coloumn;bool

最小費用流模版

const int M=20010,ME=500000;const int INF=0x3f3fffff;//******************************int Head[M],Next[ME],Num[ME],Flow[ME],Cap[ME],Cost[ME],Q[M],InQ[M],Len[M],pre_edge[M];class MaxFlow{public: void clear()

總頁數: 61357 1 .... 13829 13830 13831 13832 13833 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.