摘要:
///strcpy///原型:extern char *strcpy(char *dest,char *src);///功能:把src所指由NULL結束的字符串復制到dest所指的數組中。///說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。/// 返回指向dest的指針。#include<iostream>#include<cstring>using namespace std;int main(){ char *src = "Golden Global View"; char dest[20] ; //
閱讀全文
摘要:
#include <iostream>using namespace std;int a[50001];int qs(int s, int e){ int x = a[s], l = s, r = e; if(l >= r) return 0; while (l < r) { while(l<r && a[r]>=x) //從右向左掃描 r--; a[l] = a[r]; while(l<r && a[l]<=x) //從左向右掃描 l++; a[r] = ...
閱讀全文
摘要:
DescriptionAs a contestant, you must be familiar with the rules of ACM-ICPC. Teams are ranked according to the most problems solved. Teams who solve the same number of problems are ranked by least total time. The total time is the sum of the time consumed for each problem solved. The time consumed f
閱讀全文
摘要:
POJ 1459http://poj.org/problem?id=1459題意:給幾個發電站,給幾個消耗站,再給幾個轉發點。發電站只發電,消耗站只消耗電,轉發點只是轉發電,再給各個傳送線的傳電能力。問你消耗站能獲得的最多電是多少。//方法如下: //虛擬出源點0和匯點n+1; 將所有的源點與0相連,將所有的匯點和n+1相連 #include <iostream>#include <cstring>using namespace std;const int inf = 100000000;const int maxN = 105;int n, np, nc, m, l[
閱讀全文
摘要:
最大流的算法——Edmonds-Karp算法(最短路徑增廣算法)這里介紹一個最簡單的算法:Edmonds-Karp算法即最短路徑增廣算法簡稱EK算法EK算法基于一個基本的方法:Ford-Fulkerson方法即增廣路方法簡稱FF方法增廣路方法是很多網絡流算法的基礎 一般都在殘留網絡中實現其思路是每次找出一條從源到匯的能夠增加流的路徑調整流值和殘留網絡 不斷調整直到沒有增廣路為止FF方法的基礎是增廣路定理(Augmenting Path Theorem):網絡達到最大流當且僅當殘留網絡中沒有增廣路要實現這個算法,就遇到了三個問題:(1)最多要增廣多少次?可以證明 最多O(VE)次增廣 可以達到最
閱讀全文
摘要:
一、網絡流的三個基本性質:1.容量限制如果C代表每條邊的容量 F代表每條邊的流量一個顯然的實事是F小于等于C 不然水管子就爆了這就是網絡流的第一條性質容量限制:F<x,y> ≤ C<x,y>2.流量守恒再考慮節點任意一個節點 流入量總是等于流出的量 否則就會蓄水(爆炸危險...)或者平白無故多出水(有地下水涌出?)這是第二條性質流量守恒:Σ F<v,x> = Σ F<x,u>3.斜對稱性最后一個不是很顯然的性質 是斜對稱性: F<x,y> = - F<y,x>這其實是完善的網絡流理論不可缺少的 就好比中學物理里用正負數來定
閱讀全文
摘要:
POJ 2392http://poj.org/problem?id=2392題意:有一群牛要上太空,他們計劃建一個太空梯(用一些石頭壘), 他們有k種不同類型的石頭,每一種石頭的高度為h,數量為c,由于會受到太空輻射, 每一種石頭不能超過這種石頭的最大建造高度a,求解利用這些石頭所能修建的太空梯的最高的高度.解析:多重背包問題,與一般的多重背包問題所不同的知識多了一個限制條件 就是某些"物品"疊加起來的"高度"不能超過一個值,于是我們可以對他們的最高可能達到高度進行排序, 然后就是一般的多重背包問題了.View Code #include <ios
閱讀全文
摘要:
POJ 1014 http://poj.org/problem?id=1014題意是這樣的:有分別價值為1,2,3,4,5,6的6種物品,輸入6個數字,表示相應價值的物品的數量,問一下能不能將物品分成兩份,是兩份的總價值相等,其中一個物品不能切開,只能分給其中的某一方,當輸入六個0是(即沒有物品了),這程序結束,總物品的總個數不超過20000Sample Input1 0 1 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0 Sample OutputCollection #1:Can't be divided.Collection #2:Can be divided.下面一
閱讀全文
摘要:
POJ 1384http://poj.org/problem?id=1384題意:用豬仔錢罐存錢會有一個嚴重的問題:不能隨時知道里面到底有多少錢。但是,我們可以通過稱量其重量,來估計一下里面的錢。現假定錢罐里的都是硬幣,已知空罐的重量與現在的重量,同時,給定錢罐里可能會有的硬幣的面額與重量。問錢罐中至少有多少錢。思路:從錢罐重量差可知硬幣的總重量。每種硬幣的數量不確定,估計時可當作有可能有無限個,由此可得完全背包模型。求的是能否組合成該重量,組合以后的最小價值。Sample Input310 11021 130 5010 11021 150 301 6210 320 4Sample Outpu
閱讀全文
摘要:
完全背包問題的描述:有N種物品和一個容量為V的背包,每種物品都有無限件可用。第i種物品的費用是c[i],價值是w[i]。求解將哪些物品裝入背包可使這些物品的費用總和不超過背包容量,且價值總和最大。例子如下:30 4100 6250 12120 1035 2解釋一下上面的數據:30是背包的容量100 是第一件物品的價值,6是第一件物品的重量。往下類推……View Code #include "iostream"#include "string.h"using namespace std;#define size 10005int f[size];int m
閱讀全文