POJ 1364 King(差分約束系統)

//差分約束系統//題意相當晦澀,看了好半天才大概知道個什麼//對題目中給定的si,ni,ki,和一個給定的序列S[1....N]//如果(si,ni,gt,ki),意思就是存在約束條件S[si]+S[si+1]+...S[si+ni] > ki//如果(si,ni,lt,ki),意思就是存在約束條件S[si]+S[si+1]+...S[si+ni] < ki//判斷所給的約束條件有無解,有解就輸出lamentable kingdom,無解就輸出successful

POJ 1160 Post Office(動態規劃)

//經典動態規劃//dp(i,j)表示用i個郵局,從1到j村莊的最優解//dis(i,j)表示只用1個郵局從i到j村莊的最優解,顯然取i,j中點的村莊作為郵局點是最優的//動態轉移方程:dp(i,j) = min{dp(i-1,k) + dis(k+1,j)}(i <= k <= j-1)//注意dp數組的初始化#include<iostream>#define INF 1000000000using namespace std;int d[305];int dp[35]

POJ 2739 Sum of Consecutive Prime Numbers(素數表)

//簡單題//打一素數表然後預先處理下,把所有答案都打出來就可以了#include<iostream>using namespace std;int ans[10010];const int MAXP = 10000;int prime[100001];//記錄素數資料,prime[0]為素數表的元素個數bool is_prime[100010];//標號匹配//篩選法產生素數表模板,感覺像容斥原理,把非質數的標為falsevoid

ZOJ 3324 Machine(線段樹)

  給定操作有2種,一種是讓[X,Y]下壓1格,一種是讓[X,Y]向上恢複1格,恢複操作必定是之前下降過的。初始狀態在LEVEL=0處,對每個操作回答LEVEL=0處有幾塊連續的方塊。首先這道撲街題的規模高達10^8,因此還要對區間進行離散化。離散化過程中還要儲存被操作結點之間相對位置,即之間是否有空格存在。幸虧用SET判重+MAP離散對應還不慢,使代碼簡潔了很多。接下來總結下這道題對標記域使用。cnt是必要的,記錄當前區間的連續塊數。為了合并區間,還要記錄區間的左連續和右連續情況。再用cov記

POJ 3299 Humidex(簡單公式遞推)

//純粹公式遞推,注意題目要求,任意知2求1//別遞推錯就OK了#include<iostream>#include<cmath>#include<iomanip>using namespace std;const double Exp = 2.718281828;char a,b;double aa,bb;double var[100];double T,H,D;double e,h;void print(){cout << "T ";cout

POJ 1080 Human Gene Functions(動態規劃——LCS問題變形)

//DP動態規劃,LCS問題變形。根據LCS經典模型,我們就用dp[I,j]表示匹配到i和j的最優值.最終答案就是DP[LEN1][LEN2]//顯然有兩種情況://一、s1[i] == s2[j],也就是遇到相同字母的,狀態轉移自然是dp[i][j] = 5 + dp[i-1][j-1]//二、s1[i] != s2[j],遇到不同的呢,有這麼幾種匹配情況://1、硬將s1[i]和s2[j]匹配上去//2、不匹配,拿他們去和空格匹配,這樣就有2種匹配方案//dp[i][j] =

POJ 3259 Wormholes(判斷負權迴路|SPFA||Bellman-Ford)

//判斷是否存在負權迴路SPFA演算法#include<iostream>#include<queue>#define MAXN 505#define MAXM 6000#define INF 1000000000using namespace std;int F,N,M,WW,m,u,v,w;int head[MAXN],V[MAXM],next[MAXM],W[MAXM];bool inq[MAXN];int cnt[MAXN],dis[MAXN];void

POJ 2195 Going Home(KM演算法——二分圖最小權匹配)

//最小權匹配(KM演算法)#include<iostream>#include<cstring>#include<vector>using namespace std;const int MAX = 105;const int INF = 2147483647;char G[MAX][MAX];int lx[MAX],ly[MAX],xMatch[MAX],yMatch[MAX];bool vis_x[MAX],vis_y[MAX];int

POJ 3159 Candies(差分約束系統)

//差分約束系統//建立關係十分簡單,SPFA求到終點的距離//但這一題十分奇怪,用隊列就TLE,用棧就不會,真奇怪~#include<iostream>#include<stack>#define MAXN 30005#define MAXM 150000#define INF 1000000000using namespace std;int N,M,m,u,v,w;bool inq[MAXN];int dis[MAXN];int

POJ 2455 Secret Milking Machine(二分答案+最大流)

感謝懷哥提供的經典好題,讓我學會了二分答案這個思想!//二分答案+最大流//終於見識到傳說中的二分答案這個方法了//如果沒有二分答案這個提示,這道題我怎麼也不會往最大流去想//思路是這樣的,將所有邊權值排序,記錄邊權值的上界和下界//接著開始二分答案,依照枚舉的這個答案構圖,即將邊權值最大值小於等於枚舉的這個答案的邊加進圖中//(雙向邊)並將他們的容量設為1,有多重邊就將容量再+1,接著FF最大流,如果最大流>=T,則說明答案是滿足條件的//記住此時未必是正確答案,答案還可以再小。繼續二分

POJ 2421 Constructing Roads(最小產生樹)

//最小產生樹//只需將已經建成的路的邊權值置零即可//然後對邊進行排序,建立並查集,用Kruscal#include<iostream>#include<algorithm>#include<vector>#define MAX 105using namespace std;int N,Q;int G[MAX][MAX];int fa[MAX];struct Edge{int u,v,w;Edge(int uu,int vv,int ww){u =

POJ 2516 Minimum Cost(二分圖最小權匹配——KM演算法)

//最小權匹配(KM演算法)//構圖是關鍵,又是拆點這個思想。因為商品數量很少,最多才3,所以將一個商品拆成3個點//一開始我將K種商品全部拆出來,想一次KM解決,結果構出來的圖最壞情況是50*50*3 和50*50*3 的二部圖來匹配最優權值//在經過O(n^3)的KM + 多組資料,結果毫無疑問的TLE了//此題的關鍵是將K種商品獨立出來求解,因為K種商品相互無影響//將他們獨立出來分別進行K次KM演算法,大大降低了時間和空間//50*3和50*3的二部圖最小權匹配//複雜度是O(K*(N^

POJ 1386 Play on Words(判斷歐拉迴路存在)

//求歐拉迴路,注意歐拉圖的性質//構圖的思想是以單詞的首字母和末字母作為結點構圖,將單詞作為一條有向邊//(A)----acm------>(M)-----malform---->(M)------mouse----->(E)//1、第一步是要先對圖的連通性進行判斷,即去掉邊的方向,看圖是否連通//我看了資料規模才26,我就偷懶寫個Floyd水下算了//2、第二步就是根據歐拉圖的性質進行判斷就可以了,判斷存在歐拉道路或存在歐拉迴路//(1)有向圖G為歐拉圖(存在歐拉迴路),若

POJ 2983 Is the Information Reliable(差分約束系統)

//差分約束系統//這題比較對差分約束的構圖比較直觀//eg.P 3 1 4//4 =< s3 - s1 <= 4-----------(1)//等價於 s3 - s1 <= 4--------(2)// s1 - s3 <= -4-------(3)//V 4 5//s4 - s5 >= 1 --------------(4)//等價於 s5 - s4 <=

ZOJ 3362 Beer Problem(最小費用流)

 //最裸的最小費用流#include<iostream>#include<queue>using namespace std;const int MAXN = 105;const int MAXM = 8100;const int INF = 1000000000;int mincost,maxflow;int N,M;int U[MAXM],V[MAXM],cap[MAXM],flow[MAXM],cost[MAXM],next[MAXM];int

POJ 1157 LITTLE SHOP OF FLOWERS(動態規劃)

//動態規劃//設S[i,k]表示第i種花束擺在第k個之前(包括第k個)的任意某個花瓶中,前i種花束能夠獲得的最大美學值(之和)//原問題的最優值即為S[F,V]//S[i,k] = max{S[i-1,k-1]+A(i,k),S[i,k-1]},(i>1,k>i);//初始條件為://S[1,1] = A[1,1];//S[1,k] = max{A(1,k),S[1,k-1]},(k>1);//S[i,i] = S[i-1,i-1]+A(i,i), (i>1)//要點,

POJ 3169 Layout(差分約束系統)

//差分約束系統//不等式關係的建立十分直觀,eg://S1和S2之間距離不能大於10//S2 - S1 <= 10//S3和S4之間距離不能小於15//S4 - S3 >= 15//構圖後以1為起點,SPFA求最短路即可//如果無法到達終點N:If cows 1 and N can be arbitrarily far apart, output -2//如果存在迴路: If no line-up is possible, output

Sicily 1426 Phone List(Trie樹)

//Trie樹//對每個號碼構造Trie樹,利用狀態status進行識別#include<iostream>#include<cstring>using namespace std;struct Node{Node *num[10];int status;//status = 1表示前面已有電話號碼經過該結點,2表示電話號碼在該結點結束Node(){for(int i = 0 ;i < 10;++i)num[i] = NULL;status = 0;}}*root;

POJ 1102 LC-Display(類比題)

//類比題//將每個數字從上到下劃分成5個部分,將列印分為5種類型//1:空白 2:- 3:左| 4:右| 5:| |兩豎,同時設定5個部分的列印介面//接著LCD數組存放這個每個數字每個部分的列印類型#include<iostream>using namespace std;int S,N,len;int data[10];int LCD[10][5] = {1,4,0,4,1, 0,3,0,3,0, 1,3,1,2,1, 1,3,1,3,1, 0,4,1,3,0,

POJ 2159 Ancient Cipher(字元頻率統計)

//簡單題,注意理解題意!我就是因為理解錯題意WA了N次,注意那個對應關係不是固定不變的,是每個字母可以有獨立的對應//因此不必考慮對應了,只需要考慮字母出現頻數相同就行//sort頻率數組後然後比較,如果都相同則YES#include<iostream>#include<string>#include<algorithm>using namespace std;string str1,str2;int f1[26],f2[26];int

總頁數: 61357 1 .... 13012 13013 13014 13015 13016 .... 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.