poj 3041 網路流做法 sap+gap

#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#define min(a,b) (a)>(b)?(b):(a)#define max(a,b) (a)>(b)?(a):(b)#define inf 99999999using namespace std;int cnt;int source,N;int sink,ans;int c[4400];

hdu 2821 Pusher 附幾組資料

/*10 9.............aa.a..............a..ad.aa......................a.a.........a................8 13......................b.............b.........d.....a.......b....a....a...............b.................12 10..............a.a.........a..a...........

【練習09】簡單動態規劃 1004 命運

演算法思路:動態規劃狀態轉移方程:score[i][j] = max{score[i + 1][j], score[i][j + 1], score[i][j * k]}, k > 1。具體實現:採用遞推的方法,先單獨考慮邊界值,接下來內層的方格用一個兩層迴圈遞推。//模板開始#include <string> #include <vector> #include <algorithm> #include <iostream>

提供一個費用流的模板

bool spfa(int s,int t){int i,tt;int inq[3000];memset(inq,0,sizeof(inq));memset(p,-1,sizeof(p));memset(pre,-1,sizeof(pre));for(i=0;i<=t;i++) d[i]=inf;d[s]=0;queue<int> q;q.push(s);while(!q.empty()){int u=q.front();q.pop();inq[u]=0;for(tt=H[u]

hdu 1085 之母函數探索變形

#include<stdio.h>#include<string.h>int main(){ int c1[15001],c2[15001],c3[15001]; int n1,n2,n3; int i,j,k,f; while(scanf("%d%d%d",&n1,&n2,&n3)!=EOF && (n1||n2||n3) ) { memset(c1,0,sizeof(c1));

【圖論06】最小產生樹 1001 Constructing Roads

演算法思路:Kruskal + 並查集。//模板開始#include <string> #include <vector> #include <algorithm> #include <iostream> #include <sstream> #include <fstream> #include <map> #include <set> #include

hdu 1033 類比

#include<cstdio>#include<cstring>using namespace std;int dx[250],dy[250];char str[250];int main(){while(scanf("%s",str)!=EOF){int x=300,y=420;int i;printf("%d %d moveto\n",x,y);x+=10;printf("%d %d

【練習12】 貪心演算法 1004 Load Balancing

演算法思路:貪心 + 優先隊列。jobs需要先對時間排序,再依次選擇time值最大的那個job,把它丟給已耗用時間最少的那個server(通過優先隊列尋找)。這個過程中要記錄每次配對的job和server編號,最後一次性輸出。幾天沒有寫代碼,代碼寫得很挫,WA了無數遍,o(╯□╰)o coding是個偉大的工程,欲速則不達,還是十年磨一劍吧!代碼如下://模板開始#include <string> #include <vector> #include

並查集的反思—–小希的迷宮與Is It a Tree?

/*事實證明半斤八兩的理解忘記的速度會很快,今天早上起來忽然想起來這個題(因為昨天碰到一個歐拉迴路+並查集+字典樹),已然思路不清晰了。是什麼什麼讓我認識並查集的呢?是Hdu的暢通工程,給出一些列已經連通的點,要你判斷還需要多少建多少條路使保持暢通。我們解決的辦法是將能夠保持連通轉化為所有的點位於一個集合,並且將他們的祖先序號規定為最小元素的值。然後還需要建的路即是不相交的集合。然後我們又可以做這樣一類題,圖是否連通,這類題,最小產生樹也可以做。而小希的迷宮呢?小希的迷宮是在保持原有圖形連通的基

【練習06】BFS 1002 Ignatius and the Princess I

演算法思路:BFS。這是一道用BFS求最短路的題,整個代碼架構參考自“劉汝佳的《演算法競賽》”,包括bfs()函數和print_path()函數。關鍵點:1.因為存在具有Hp為n的monster存在,如果按照常規的方法直接壓入隊列,得到的並不會是題目要求的“最短路”,因此必須在處理的過程中想辦法當遇到monster的時候在原地等待,等待時間到了之後“自動”的和其他的結點一起繼續向“外部”擴散。處理方法:如果當前位置是monster,那麼我就削減他一個HP,再壓入隊尾,直到HP為0時,繼續向四周擴

【圖論01】最短路 1001 最短路

演算法思路:Dijkstra演算法,簡單的模板題。剛開始沒有吧w數組初始化,WA了三次,改過來之後成功AC。//模板開始#include <string> #include <vector> #include <algorithm> #include <iostream> #include <sstream> #include <fstream> #include <map>

【練習12】 貪心演算法 1004 Doing Homework again

演算法思路:貪心。先對所有的homework排序,deadline大的在後面,然後依次從後往前分配每一天的任務,因為分配給某一天的homework的deadline一定要大於等於這一天的下標(下標依次為1,2,3,...,N),所以遍曆所有可行的(deadline>當前要分配的這一天的下標)homework選擇penalty最大的哪一個就行了,但是選擇之後要記得進行標記,下次遍曆的時候就不要再選了。最後再根據標記統計一下沒有分配的homework的總的penalty就是結果了。代碼如下,水

Prim和Dijkstra

void dijk(int v){ memset(vis,0,sizeof(vis)); for(int i=1;i<=len;i++) dist[i]=map[v][i]; dist[v]=0; vis[v]=1; for(int i=1;i<=len;i++) { int m=maxn,f=0; for(int j=1;j<=len;j++) if(!vis[j]&&

網宿科技杯廈大第十屆校賽 A題 1480.十

由於比賽時,現場敲的代碼比較亂,這是整理過的版本;類比題,注意一下字串資料的輸入,用遞迴求解重疊(擴散)的部分。//模板開始 #include <string> #include <vector> #include <algorithm> #include <iostream> #include <sstream> #include <fstream>

hdu 2850 Load Balancing(貪心+優先隊列)

每次自己寫優先隊列都會有一種很山寨的感覺。將所有的容器入隊,將任務從大到小排列,每次把任務都分配給當前最清閑的容器。第一次提交的時候竟然因為沒有輸出那個nwa了。#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>using namespace std;#define N 100005struct point{ int x,y; int id;}a[N]

【圖論07】線段樹 1002 I Hate It

演算法思路:線段樹。代碼如下://模板開始#include <string> #include <vector> #include <algorithm> #include <iostream> #include <sstream> #include <fstream> #include <map> #include <set> #include <cstdio&

hdu 2176 nim和

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int a[200011];int main(){ int m,nim,i; // bool flag; while(scanf("%d",&m)!=EOF && m) { scanf("%d",&a[0]); nim=a[0];

hdu 4297 One and One Story (維護森林中的LCA)

題意:有n個房間,每個房間有且只有一條出邊指向另一個房間,現給出兩個人在兩個房間,問讓他倆匯合要走的最少的路徑數解法:觀察圖的形態,由於n個點n條邊,且每個點出度為1,因此可以認為是一個森林,森林裡每棵樹都加了一條邊形成了一個環,且環是根節點(可以認為縮點後沒有出邊,即沒有父節點)。顯然兩點屬於不同樹的時候不可達;因為圖的特殊性,因此沒有用強連通做,而是用了並查集判環,也便於給環上每個點標上相對位置。如果兩點在同一顆樹上,如果不在根節點的同一分支,那麼他們首先要走到環上,然後一個人不動另一個走(

關於論文資料庫檢索的介紹

科技論文寫作以及學位論文過程中,為瞭解當前國內外研究現狀、確定研究方向,我們需要對論文資料庫檢索。俗話說好的開始是成功的一半,如果在檢索時選擇了正確的資料庫,使用了正確的檢索技術,那麼以後的研究工作可能會少走很多彎路。本文僅討論電腦相關領域的論文檢索。      首先,是資料庫的選擇。雖然說電腦方面國外一般研究水平要比國內領先,但是我覺得對於一個自己未知的新領域,通過對國內期刊以及碩、博士論文的檢索還是可以學到不少東西的。所以這裡先介紹幾個國內的資料庫,國內的資料庫:中國知網

hdoj 2830 Matrix Swapping II (DP求最大子矩陣的變型題)

#include <stdio.h> #include <string.h> int m, n, h[1001], num[1001]; char matrix[1001]; int main() { //freopen("in.txt", "r", stdin); while(scanf("%d %d",&m, &n) != EOF) { getchar();

總頁數: 61357 1 .... 17437 17438 17439 17440 17441 .... 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.