原创 POJ2524

#include <iostream> #include <cstring> #include <string> #include <queue>

原创 poj3026

題意:給一個迷宮,S,A,空格都可以走,問以最短步數走完全部S和A的最短路,把S和A看成點,先分別求出兩兩最短路,然後求最小生成樹。 #include <iostream> #include <cstring> #include <str

原创 關於最短路

     把最近做的幾道最短路一起總結一下吧    poj1062 中文題,不解釋題意,對於渣渣來說,是先看別人題解後才做的,以酋長的允諾作爲目標點,每一個物品與替換物之間會有一條邊,由於交換有限制,所以建完圖後,以每一個點爲終點或是

原创 POJ1442

題意::給定M個數,每次可以插入序列一個數;再給N個數,表示在插入第幾個數時輸出一個數,第一次輸出序列中最小的,第二次輸出序列中第二小的……以此類推,直到輸出N個數。 用兩個優先隊列動態維護,因爲插入第幾個數時輸出第i個最小,序列是動態的

原创 poj1094

拓撲排序:對每一條式子建圖,然後做一次拓撲排序,每一次操作後需要判斷是否有環,是否有序,如果無序則繼續下一個操作。拓撲操作是先建完圖後每次找入度爲零的點,然後斷掉這個點與圖內其他點相連的邊,接着繼續重複,如果找不到入度爲零的點則存在環 #

原创 POJ2299

歸併排序,主要是,題目可轉換爲求逆序數的問題 #include <iostream> #include <cmath> #include <cstring> #include <cstdio> #include <algorithm> u

原创 POJ3292

水題,給出一個數n,求在1到n中,剛好是由兩個模4餘1的素數相乘得到的數有多少個 #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #i

原创 POJ1837

這道題的做法是:用dp[i][j]表示掛滿前i個鉤碼後平衡度爲j的方法數,所以對於每一個平衡度j都有可以是由不同數量的鉤碼達到,只是鉤碼掛在哪裏,所以從第一個鉤碼,第一個平衡度,開始遍歷,每遇到一個dp[i-1][j]都可以推出下一個dp

原创 poj1577

就是搜索二叉樹,樹的左兒子比她小,右兒子比她大,本來用遞歸插入,不知道爲什麼輸不出。。。。。。 #include <iostream> #include <string> #include <stack> using namespace

原创 poj2488

水題,不解釋。。。 #include<iostream> #include <cstring> using namespace std; int dir[8][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1

原创 poj1068

做水題做的好開心,簡單模擬題。。。。。。 p是每一個右括號前有多少個左括號,求出w,w表每一個右括號前第幾個左括號與他匹配。。。 直接根據p模擬出整個括號字符串,然後每遇到一個右括號,向前數第幾個左括號與她匹配 #include <ios

原创 poj3020

一些常用性質: 對於無向圖: 最小點覆蓋+最大獨立集=頂點個數 最大團=補圖的最大獨立子集 關係1:給定圖G = (V,E)無孤立點,則G的極大點獨立集都是G的極小支配集。 關係2:G的點覆蓋數 a與點獨立集數 b滿足:

原创 poj3259

題目大意是,F個農場,N點,m條無向邊以及每兩個連接的點要花費的時間,w條有向邊,從一點到另一點可減少一定時間,問是否有可能問你從某個點開始走,能回到從前。 兩種解法 spfa #include<iostream> #include<c

原创 poj2635

#include <iostream> #include <cmath> #include <algorithm> #include <cstrin

原创 poj2442

第一次寫堆,估計也可以用優先隊列做,給一個m*n矩陣,每行任取一個數出來,求最小n 數和。從第一行到第i行,用一個堆去存儲前i行,最小的n個i數和。 #include <iostream> #include <cstring> #incl