pku3411 Paid Roads

給定一個圖,N個頂點,M條邊,N值極小,對於每一條邊,有ai,bi,ci,pi,ri這幾個參數,表示這條邊從ai到bi,如果之前經過了ci,那麼費用是pi,否則費用為ri,求從1到N的最小費用。用f[i,j]為節點,i表示當前在哪個點,j轉化為位元後為0位表示未經過這一點,為1這表示經過了這一點,進行SPFA即可{對j的解釋,11:1011,表示經過1,3,4這三個點而沒有經過2}View Code 1 program pku3411(input,output); 2 type 3

pku3360 Cow Contest

給一些牛的排名關係,問有多少牛的排名確定。如果A比B強,就由A向B連邊,之後求出這個圖的傳遞閉包,對於一頭牛,如果比它強的+比它弱的=N-1,它的排名一定。View Code 1 program pku3660(input,output); 2 var 3 g : array[0..101,0..101] of boolean; 4 answer : longint; 5 n,m : longint; 6 procedure init; 7 var 8

CTSC99 選課

很老的一道樹DP,用樹形DP的模型做,今天再寫的時候居然沙茶的在計算過某狀態後又重新計算,DP退化成了搜尋,無奈。轉成二叉樹後枚舉左右子樹分配的資源量即可。View Code 1 program ctsc(input,output); 2 var 3 n,m : longint; 4 w,v : array[0..601] of longint; 5 left,right : array[0..601] of longint; 6

pku1190 生日蛋糕

這道題是一道經典的搜尋剪枝題,每次聽搜尋的課總有這道題,剪枝思想主要就是最佳化和可行性。最佳化:當前面積+下面的最小面積>當前解可行性:1:當前剩餘體積<做完剩餘蛋糕需要的最小體積           2:當前剩餘體積+做剩餘蛋糕能用的最大體積<NView Code 1 program pku1190(input,output); 2 const 3 maxr = 30; 4 maxh = 30; 5 var 6 n,m,answer :

pku 1258 Agri-Net

求一個圖的最小產生樹,用了prim,0ms,但前面WA了幾次,這裡進一步理解了prim,外部迴圈i只是控制次數,內部不用看i與j的值的關係,把d賦值成0,表示在樹裡,節省了一個布爾數組。View Code 1 program pku1258(input,output); 2 var 3 f : array[0..200,0..200] of longint; 4 d : array[0..200] of longint; 5 n :

pku1325 Machine Schedule

有兩台機器A,B,分別有n,m個進程,有k個任務,每個任務要麼在A的x進程上完成,要麼在B的y進程上完成,但機器換進程要時間,求完成方案下的最短時間。最小覆蓋問題,通式:方案有兩個,作為二分圖的對立點,而任務為點,完成每一個任務的兩種方案連邊,求最大匹配即可,因為“最小覆蓋=最大匹配”很不理解輸入裡面的那個i有什麼用??View Code 1 program pku1325(input,output); 2 var 3 f : array[0..201,0..201] of

STL的堆操作

STL裡面的堆操作一般用到的只有4個:make_heap();、pop_heap();、push_heap();、sort_heap(); 他們的標頭檔函數是#include <algorithm> 首先是make_heap(); 他的函數原型是:void make_heap(first_pointer,end_pointer,compare_function);

SGU 499 Greatest Greatest Common Divisor

給定N個數,每兩個數有一個最大公約數,求最大的最大公約數。N<=10^5,每個數<=10^6枚舉求是N^2*logN的,必定逾時換一個思考的角度,如果我們假設最大公約數是多少,用多少時間可以判定是否成立呢?假設判定x,那麼給變數每次加x,看有沒有這個值,有的話就計數器加一,計數器一旦大於1,就成立,跳出即可。這樣,我們開一個10^6的數組,v[i]記錄值為i的數的個數,判定有沒有值時就是O(1)的了,總體時間在max_number*logN左右View Code 1

pku2239 Selecting Courses

看到這個標題後我毅然交上了CTSC的樹形DP,WA的結果不言而喻,囧仔細讀題後有兩種思路:1.把每個課程拆成兩個點,對於時間發生矛盾的課之間(i‘-->j)(i-->j')下面應該是一個最大獨立集問題了,點數減匹配數即可這個思路沒有實踐,如果有錯,請指出。2.很多人都用這種方法,二分圖一邊是84個時間點,另一邊是課程,連邊之後求最大匹配即可View Code 1 program pku2239(input,output); 2 var 3 f : array[0..100,

pku2421 Constructing Roads

求一個圖的最小產生樹,其中某些邊不收費(可以這樣理解)。這次用kruscal打的,對於不收費的邊先全部加入,再維護即可。View Code 1 program pku2421(input,output); 2 var 3 father : array[0..200] of longint; 4 f : array[0..200,0..200] of longint; 5 x,y,w : array[0..40000] of longint;

pku1183 反正切函數的應用

給出算式{1/a = (1/b + 1/c) / (1 - 1/(b*c)}中的a,求算式中b和c使b+c最小.a,b,c均大於0。經過一系列的數學推導,可以得到b的範圍是{0 < b <= a + sqrt(a^2 + 1)}又從某OIer的部落格中看到令f(b)= b + c即f(b)=b + (ab + 1) / (b - a)求導得到f(b)' = 1 - (a^2 + 1) / (b - a)^2,在區間(a, a + sqrt(a^2 +

pku3659 Cell Phone Network

給定一棵樹,要求對於每一個節點,要麼自己放聯絡器,要麼兒子放聯絡器,要麼父親放聯絡器,求讓所有點滿足條件的最少聯絡器數。一道經典的看守皇宮問題,用DP解決。f[0,now]表示在now節點放聯絡器的以now為根的子樹的最小代價f[1,now]表示now節點不放聯絡器,被他的兒子聯絡的以now為根的子樹的最小代價f[2,now]表示now節點不放聯絡器,被他的父親聯絡的以now為根的子樹的最小代價注意樹的形態開始並不確定,需要DFS一次來建樹。狀態的轉移在程式裡很清楚,輸出答案是min{f[0,1

pku3678 Katu Puzzle

典型的2-SAT問題,每個數要麼是0,要麼是1,直接連邊Tarjan即可如果用x表示第x個數取0,x+n表示第x個數取1,注意在x and y=1 時連(x--->x+n)   (y--->y+n),表示x必須取1,當x取到0時,由於與1有邊相連,在一個強連通裡,無解!View Code 1 program pku3678(input,output); 2 type 3 node = ^link; 4 link = record 5

pku3318 Matrix Multiplication

有三個矩陣A,B,C,問A*B是否C,(n^3)的演算法會逾時。構造一個n*1的矩陣,由A*B=CA*B*X=C*XA*(B*X)=C*X那麼在(n^2)的時間內就能判定一次。View Code 1 program pku3318(input,output); 2 var 3 x,y,z : array[0..501,0..501] of int64; 4 left,right,answer1 : array[0..501] of int64; 5 n

pku 3468 A Simple Problem with Integers

一道線段樹的典型應用,標記真強大,沒事怕錯就多下放幾次標記,反正沒什麼錯。View Code 1 program tree_line(input,output); 2 type 3 node = record 4 sum,mark : int64; 5 left,right,x,y : longint; 6 end; 7 var 8 tree

pku1338 Ugly Numbers

把質因子只有2,3,5的數稱為Ugly數,求第k大的Ugly數。(1是第一個)用堆儲存數字,開始堆中只有1,每次刪除最小值,把最小值的2倍,3倍,5倍插入到堆中,執行k次就得到結果。注意要判重,用個hash就行,有點羨慕C++的map了。View Code 1 program pku1338(input,output); 2 type 3 longint = int64; 4 node = ^link; 5 link = record 6

pku1274 The Perfect Stall

有n頭牛,m個牛欄,其中每頭牛都有自己願意去的牛欄,求牛和牛欄的最大匹配。簡單的二分圖裸題,居然調了1節課,資料會陰人啊!!每行第一個數是說這一行接下來有多少個數,可是這些數完了這一行還有數,用read就悲催了!View Code 1 program pku1274(input,output); 2 var 3 f : array[0..301,0..301] of boolean; 4 v : array[0..301] of boolean; 5 lk :

pku2351 Colored Sticks

題目自己去看,網上的題解也是一堆一堆的,但這絕對是練習tire,歐拉路徑和並查集的一道經典題目,還是重複一下老掉牙的流程               1.用tire給每一個顏色字串編號。               2.先判斷是否是歐拉路徑(沒有或只有兩個奇點)。               3.用並查集判斷圖是否是連通的。過了範例之後,先測一下這組資料:a bb cc ad ee ff

pku3662 Telephone Lines

給一個n個點,m條邊的圖,每條邊上有費用,求1到n的路徑中最長邊最小值,其中可以選擇k條邊不計費用最大最小問題,看見就二分答案布爾數組

vijos 1201高低位交換

本題誰都會做,在這裡分析一下各個方法。1.按照說明類比,不再累述。2.pascal同學有內建函數swap,但要注意資料類型了,longint不夠2^32,int64不符合函數要求,只能用cardinal。3.最有水平的解法,位元運算(n shr 16) or (n shl 16) 就是結果了。View Code 1 program p1201(input,output); 2 var 3 x:dword; 4 begin 5

總頁數: 61357 1 .... 10326 10327 10328 10329 10330 .... 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.