POJ 1149 PIGS (最大流Dinic)

題意:話說一個豬圈管理員,他本身沒有豬圈的鑰匙。每天會有許多顧客來買豬,這些顧客自己帶著某些豬圈的鑰匙。每當一個顧客來買豬,這些開啟的豬圈裡的豬可以隨意流動,買完豬之後開啟的豬圈全部關閉。現在已知每個豬圈裡豬的的數量,每一名顧客擁有的鑰匙以及他想購買的豬的數量。求管理員可以賣出的最大數量。題解:構圖是痛點在於豬的流動。我是這樣想的,假設顧客A可以開啟了豬圈1,3,5,他需要購買numA頭豬,由於每次被開啟的豬圈之間的豬可以自由分配,那麼豬圈1,3,5就可以視作一個集合X,當顧客A買完豬之後,集合

第十周總結

細數逝去的十周,傷心漠然,淡淡的感覺。時間是樣的好的東西,它可以讓你忘記同苦忘記憂傷,看懂一切。同樣時間也一點點拉大你們的差距沒次都是被虐,暴虐。如此反覆,說明一件事。:你呀要麼廢物,要麼腦殘。省賽還有十天!!!面對個人這麼多的問題:         1:敢於面對         2: 問題存在沒關係,關鍵是怎麼處理                 怎麼做。         3:   培養自己做事的態度和決心!!!  

POJ 2112 Optimal Milking (二分+匈牙利)

題意:在一片草場上有K台擠奶機,每台擠奶機最多可以為M頭奶牛擠奶。有C頭奶牛。把奶牛和擠奶機看做個體,則所有個體之間有一定的距離。現在給出K,C,M以及所有個體之間的距離。在保證所有奶牛都可以擠奶的情況下,求路程最長的奶牛的最小路程。題解: 題目已經保證了所有奶牛都可以擠奶,那麼最長的路徑自然是 (頂點數-1) * 200。我們只需要二分最小路程,然後判斷在此情況下是否所有的奶牛都存在合適的匹配。#include <iostream>using namespace

POJ 3301 Texas Trip (三分求極限)

 題意:給出許多點的座標,用最小的正方形覆蓋之。題解:三分。注意精度····。公式神馬的畫個圖推一下即解決double mid1 = (left + right)/2;             double mid2 = (mid1 + right)/2;         相比 double mid1 =left +(right - left)/3;double mid2 = right - (right - left)/3;要求更高的精度。 #include

POJ 2135 Farm Tour (最小費用最大流)

題意:FJ帶他的朋友參觀農場,他們的起點是1,終點是N, 點與點之間可能存在路徑。現在要求從1到N,在從N回到1所走的最短路程。並且返回時已經被走過的路不能再走!題解:最小費用流。每條路只走一次,說明每一條邊的容量為1。由於是無向圖,所以從N走回1的過程其實就等同於再從1到N走一遍。那麼就需要尋找兩條從1到N的最短路徑。取一個超級源點,將其與1串連,邊的容量為2(兩條路),費用為0。N與一超級匯點串連,容量也為2,費用為0。還有加邊的時候需要特別注意!!!例如下面的圖:倘若輸入的是這樣一組資料:

POJ 2728 Desert King (最小比率產生樹,二分/迭代)

 題意:沙漠裡的王國需要修建水渠,串連國都與村莊····。說白了求一棵樹,每個點有三個座標(x,y,z)。邊的benifit為兩點之間的距離,cost為兩點的高度差。現在要求一棵樹使得 cost / benift 最小。題解:很顯然任意兩點之間都有邊,所以是一個很稠密的圖。用Prime。二分的話2800ms+, 迭代300ms+。#include <cmath>#include <iostream>using namespace std;#define MAX 1009#

POJ 2289 Jamie’s Contact Groups (二分+匹配/網路流)

題意:把n個點,分到m個組中。題目給出每一個點可以被分到的那些組。要求分配完畢後,最大的那一個組的人數最小。題解:比較怪。一開始化作費用流做。假設每一次增廣過後,路徑上所有邊的費用增大相等的值,這樣一來,被增廣過的路徑下一次就不會被立即增廣了。這樣就能使與匯點相連的那些點均勻增加。結果悲劇TLE```。#include <iostream>using namespace std;#define MAX 1001#define INF 999999999#define min(a,b)

POJ 3737 UmBasketella(三分)

題意:給出圓錐的表面積(包含底面)。求其最大體積,以及此時的底面半徑及高#include <cmath>#include <iostream>using namespace std;#define eps 0.00000005#define PI acos(-1.0) // PI用反三角函數比較準確int main(){double s;while ( scanf("%lf",&s) != EOF ){double v = 0.0;double low = 0,

POJ 3299 Humidex 雜題

題意:略。按公式便好。#include <cmath>#include <iomanip>#include <iostream>using namespace std;int main(){double one, two;char first, second;cout << setprecision ( 1 ) << fixed;while ( cin >> first && first != 'E' ){

POJ 1679 The Unique MST (次小產生樹Prime/Kruskal)

題意:判斷圖中的最小產生樹是否唯一。題解:只需驗是否存在兩個或兩個以上權值相同的最小產生樹。注意:1.圖中任意兩點間最多隻有一條無向邊; 2.圖可能不連通(此時mst = 0)。Prime :複雜度 O( V ^ 2 )#include <iostream>using namespace std;#define MAX 101#define INF 999999999#define max(a,b) (a>b?a:b)int dis[MAX], pre[MAX];int

POJ 2318 TOYS / POJ 2398 (二分,叉集)

 題意:統計每個格子裡面的玩具有多少。2318給出分隔板的時候是從左至右,2398的分隔板並沒有排序,得自己排一下。兩題就是輸出有點不同,其他沒什麼···POJ 2318:#include <iostream>using namespace std;#define MAX 5999struct CardBoard{int x1, y1, x2, y2;double k; } board[MAX];int cell[MAX];int judge ( int x, int y,

POJ 1083 Moving Tables 貪心

題意:已知有400個房間,有n張桌子必須從a 房間搬到 b 房間,搬每張桌子所花的時間都是10分鐘。走廊上每次只能容下一張桌子,但是不同的地方允許同時搬運。求將所有的桌子全部搬完最少要花多少時間。題解:給出兩種解法。#include <cstdlib>#include <iostream>using namespace std;struct item{int a, b, flag;} move [201];int cmp ( const void *x, const

POJ 3304 Segments (直線與線段相交)

題意:給出許多線段,問能否找到一條直線,使得所有線段在它上面的投影存在交點。題解:轉自http://blog.sina.com.cn/s/blog_6635898a0100n2lv.html1:把問題轉化為是否存在一條直線與每條線段都有交點。證明:若存在一條直線l和所有線段相交,作一條直線m和l垂直,則m就是題中要求的直線,所有線段投影的一個公用點即為垂足。2:枚舉兩兩線段的各一個端點,連一條直線,再判斷剩下的線段是否都和這條直線有交點。證明:若有l和所有線段相交,則可保持l和所有線段相交,左右

解題報告之代碼 pku 1789

#include<stdio.h>#include<string.h>#define N 2001int grah[N][N];int sum;void  prim(int n){int i,j,pos;int min,v[2001]={0},d[2001];    for(i=0;i<n;i++)d[i]=grah[0][i];v[0]=1;for(i=1;i<n;i++){min=99999999;for(j=0;j<n;j++){         

POJ 3352 Road Construction (邊雙連通,縮點)

題意:加上最少的邊,使得改造後的圖中去掉任意一條邊後圖依然連通。題解:先找出邊雙連通分量,然後縮點,的到一棵樹。需要加的最少邊=(leaves+1)/2PS:我們可以發現low[4]=3,low[7]=4 但是我們知道<4,7>這條邊並不是割邊.所以 low[u]!=low[v]是割邊的必要不充分條件. #include<cstdio>#include<string>#include<algorithm>using namespace

POJ 1269 Intersecting Lines (兩直線之間的位置關係)

題意:判斷兩直線之間的位置關係,平行,重合,相交題解:注意精度#include <cmath>#include <iostream>using namespace std;#define MAX 100#define eps 1e-8#define zero(x) ( ((x) > 0 ? (x) : -(x)) < eps )struct Point { double x, y; };struct Line { Point a, b; };struct

POJ 2409 Let it Bead / 1286 Necklace of Beads Polya 計數

題意:用k種不同的顏色給長度為n的項鏈染色。題解:1.旋轉置換:一個有n個旋轉置換,依次為旋轉0,1,2,```n-1。對每一個旋轉置換,它迴圈分解之後得到的迴圈因子個數為gcd(n,i).2.翻轉置換:分奇偶討論。奇數的時候 翻轉軸 = (頂點+對邊終點的連線),一共有n個頂點,故有n個置換,且每個置換分解之後的因子個數為n/2+1;   偶數的時候 翻轉軸 = (頂點+頂點的連線),一共有n個頂點,故有n/2個置換,且每個置換分解之後的因子個數為n/2+1;  或者 翻轉軸 =

POJ 3177 Redundant Paths (邊雙連通,縮點,判重)

題意:加上最少的邊,使得改造後的圖中去掉任意一條邊後圖依然連通。(圖是非簡單圖,需要判重)題解:先找出邊雙連通分量,然後縮點,的到一棵樹。需要加的最少邊=(leaves+1)/2我們可以發現low[4]=3,low[7]=4 但是我們知道<4,7>這條邊並不是割邊.所以low[u]!=low[v]是割邊的必要不充分條件.#include <iostream>using namespace std;#define N 10010#define min(a,b) (a<

POJ 1556 The Doors (線段相交+Dijkstra)

題意:找從起點到終點的最短路徑。題解:可以知道,但凡兩點不能直達,則一定是沿著牆邊界點走的,這樣才能保證路徑最短。那麼只需要再所有可以直達的點間連上一條邊,求一次最短路徑。注意判斷兩線段是否相交應該是判斷“嚴格相交”,即不包含端點。#include <cmath>#include <cstdio>/*#include <iostream> //不知道為什麼加上這兩句就報一些奇怪的錯誤····using namespace std; */#define

POJ 2417 Discrete Logging 離散對數/BabyStep_GiantStep

題意:BL == N (mod P),並且p是素數題解:#include<cstdio>#include<cmath>#include<cstring>using namespace std;#define lint __int64#define MAXN 131071struct HashNode { lint data, id, next; };HashNode hash[MAXN<<1];bool

總頁數: 61357 1 .... 13173 13174 13175 13176 13177 .... 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.