1. 程式人生 > >杭電acm1052解題程式碼(詳細註釋)

杭電acm1052解題程式碼(詳細註釋)

Here is a famous story in Chinese history.

"That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and others."

"Both of Tian and the king have three horses in different classes, namely, regular, plus, and super. The rule is to have three rounds in a match; each of the horses must be used in one round. The winner of a single round takes two hundred silver dollars from the loser."

"Being the most powerful man in the country, the king has so nice horses that in each class his horse is better than Tian's. As a result, each time the king takes six hundred silver dollars from Tian."

"Tian Ji was not happy about that, until he met Sun Bin, one of the most famous generals in Chinese history. Using a little trick due to Sun, Tian Ji brought home two hundred silver dollars and such a grace in the next match."

"It was a rather simple trick. Using his regular class horse race against the super class from the king, they will certainly lose that round. But then his plus beat the king's regular, and his super beat the king's plus. What a simple trick. And how do you think of Tian Ji, the high ranked official in China?"



Were Tian Ji lives in nowadays, he will certainly laugh at himself. Even more, were he sitting in the ACM contest right now, he may discover that the horse racing problem can be simply viewed as finding the maximum matching in a bipartite graph. Draw Tian's horses on one side, and the king's horses on the other. Whenever one of Tian's horses can beat one from the king, we draw an edge between them, meaning we wish to establish this pair. Then, the problem of winning as many rounds as possible is just to find the maximum matching in this graph. If there are ties, the problem becomes more complicated, he needs to assign weights 0, 1, or -1 to all the possible edges, and find a maximum weighted perfect matching...

However, the horse racing problem is a very special case of bipartite matching. The graph is decided by the speed of the horses --- a vertex of higher speed always beat a vertex of lower speed. In this case, the weighted bipartite matching algorithm is a too advanced tool to deal with the problem.

In this problem, you are asked to write a program to solve this special case of matching problem.

相關推薦

acm1052解題程式碼詳細註釋

Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse ra

查詢——平衡二叉樹的實現程式碼詳細註釋

    既然你搜索到了這篇文章,那麼平衡二叉樹的作用想必心中已經清楚了,我們接下來就直接來談談程式碼... 目錄 知識準備   進階講解     程式碼實現 謝謝閱讀 知識準備       啥?你又不知道,真拿你沒辦法,給你一篇講的不錯的文章:

2030解題程式碼

漢字統計 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi

C語言--氣泡排序法詳細註釋

     博主剛本科畢業,最近在寫程式的時候要將10000個數據進行排序,因為是學控制方向的,之前也沒接觸過這麼大資料量的排序,所以最先想起來的還是冒泡法,但發現頗為耗時。因此準備趁現在暑假,好好再複習複習一些基礎演算法,也為之後工作打好點基礎。      今晚是第一篇,

2546 飯卡01揹包

電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買一個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功(即使購買後卡上餘額為負),否則無法購買(即使金額足夠)。所以大家都希望儘量使卡上的餘額最少。 某天,食堂中有n種菜出售,每種菜可購買一次。已知每種菜的價格以及卡上的餘額,問最

利用Python實現k最近鄰演算法 並識別手寫數字詳細註釋

    K最近鄰(k-Nearest Neighbor,KNN)分類演算法,是一個理論上比較成熟的方法,也是較為簡單的機器學習演算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。K最近鄰

親測dropzone.js外掛,並附自己做的上傳附件案例前後臺原始碼詳細註釋以及漢化後的效果圖

先談一下我為什麼做這個。因為我認為i這個外掛特別符合現代潮流,所有的上傳動畫效果我都特別喜歡,支援多檔案同時上傳,最帥的是拖拽上傳,上傳進度,上傳完成,上傳失敗的提醒都很亮眼,而且親測可以支援幾乎所有

快速上手生成對抗生成網路生成手寫數字集直接上程式碼以及詳細註釋,親測可用

這裡插入幾張模型生成的圖片,從左到右分別是隨機生成的圖片,100輪之後的圖片,2000輪之後的圖片,8000輪之後的圖片。 程式碼雖然有100多行,但註釋大概佔了一般左右。一起交流,一起進步! import tensorflow as tf from matplotlib import

哈夫曼樹詳細講解帶例題和C語言程式碼實現——全註釋

** 哈夫曼樹詳細講解(帶例題和C語言程式碼實現——全註釋) ** 定義 哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的 路徑長度(若根結點為0層,葉結點到根結點的路徑長度為葉結點

二叉樹的鏈式儲存結構及實現C語言完整程式碼+詳細註釋

鏈式儲存結構儲存二叉樹,實際上就是採用連結串列儲存二叉樹。 既然是使用連結串列,首先需要構建連結串列中節點的結構。考慮到儲存物件為二叉樹,其各個節點最多包含 3 部分,依次是:左孩子、節點資料和右孩子,因此,連結串列的每個節點都由這 3 部分組成: 圖 1 二叉連結串列結點構成 圖 1 中,Lchi

TensorFlow實現用於影象分類的卷積神經網路程式碼詳細註釋

這裡我們採用cifar10作為我們的實驗資料庫。 首先下載TensorFlow Models庫,以便使用其中提供的CIFAR-10資料的類。 git clone https://github.com/tensorflow/models.git cd mo

ACM hdu 2152 Fruit 解題報告母函式

Problem Description 轉眼到了收穫的季節,由於有TT的專業指導,Lele獲得了大豐收。特別是水果,Lele一共種了N種水果,有蘋果,梨子,香蕉,西瓜……不但味道好吃,樣子更是好看。 於是,很多人們慕名而來,找Lele買水果。 甚至連大名鼎鼎的HDU ACM

泊松分佈取樣 Poisson-Disk-Sample程式碼詳細註釋【OpenCV】

關鍵程式碼如下: // 以center為圓心radius為半徑的圓環範圍內隨機產生新的取樣點 template<unsigned int N, class T> void sample_annulus(T radius, const Vec<N,

ACM hdu 2082 找單詞 解題報告母函式

Problem Description 假設有x1個字母A, x2個字母B,..... x26個字母Z,同時假設字母A的價值為1,字母B的價值為2,..... 字母Z的價值為26。那麼,對於給定的字母,可以找到多少價值<=50的單詞呢?單詞的價值就是組成一個單詞的所有

ACM hdu 2079 選課時間 解題報告母函式

Problem Description 又到了選課的時間了,xhd看著選課表發呆,為了想讓下一學期好過點,他想知道學n個學分共有多少組合。你來幫幫他吧。(xhd認為一樣學分的課沒區別)Input輸入資料的第一行是一個數據T,表示有T組資料。每組資料的第一行是兩個整數n(1

HDU 4920多校訓練#5 1010 題 Matrix multiplication(不知道該掛個什麽帽子。。。

預處理 ica ref 循環 ring sca esp 題解 code 題目地址:HDU 4920 對這個題簡直無語到極點。。。竟然O(n^3)的復雜度能過。。。。方法有三。。 1:進行輸入優化和輸出優化。。(前提是你的輸入優化不能太搓。。。) 2:利用緩存優化。。詳情

純JavaScript實現俄羅斯方塊詳細註釋

learn 基本 nload alt log ref 遊戲截圖 www tar 借鑒了慕課網的課程《基於websocket的火拼俄羅斯(單機版)》雖然改動比較多,但是還是核心部分沒有改,加了一些不怎麽好聽的聲音,和看起來並不好看的界面。 CSS部分基本是瞎寫的,因為對於H

數據結構-堆 接口定義與實現分析詳細註釋與圖解

info 獲取 init ret targe 動態 函數 target 用戶自定義函數 如果想了解堆的概念,可以點擊此處查看前面關於堆的定義的隨筆。 堆的操作接口包括初始化堆、銷毀堆、向堆中插入元素、從堆頂移除元素、堆的結點個數。 我們用heap來命名一個堆。下面是對以上接

log4j2配置檔案模板詳細註釋

log4j2配置檔案模板(帶詳細註釋) <?xml version="1.0" encoding="UTF-8"?> <!--日誌級別以及優先順序排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRA

爬完課表的後事1

今天早上不把這幾天沒發的朋友圈補回來就不出門了。 杭電學生成績頁HTML解析 第二篇部落格裡的程式碼返回的是一串html程式碼,也就是個字串,java處理字串真的感動的不行。這是第一次接觸正則表示式,以前看到了就拿去寫寫,匹配一下感覺還不錯,然後就這幾個返回的字串拿來練正