HDOJ 1217 Arbitrage 解題報告

2021-06-22 12:39:27 字數 943 閱讀 9640

求最短路的題,與普通最短路不同的地方是運算是用乘法而不是加法。題意:套匯是指利用不同外匯市場

的外匯差價,在某一外匯市場上買進某種貨幣

,同時在另一外匯市場上賣出該種貨幣,以賺取利潤

。這種利潤稱之為套利。比如1美元可以買0.5英鎊,而1英鎊可以買10法郎,2法郎可以買1美元,那麼可用通過套匯使用1美元買到2.5美元,套利是存在的。下面給出各個貨幣的種類和名稱,再給出一些貨幣轉換的匯率,請問是否存在套利?

解題思路:因為匯率的轉換是使用乘法,而與小於1的數相乘是會導致原來的數變小的,所以此題相當於是有負權的題目,很明顯dijkstra演算法是不能使用的了。題目問套利是否存在,因此每種貨幣是否存在套利都應該考慮,貨幣種類不超過30,使用floyd演算法的耗時不會太多。再想想,題目中不一定給出的任意兩種貨幣都能夠互相轉換,那麼不能夠轉換的話我們如何表示它們之間的匯率呢?用0表示,這樣則說明不能夠轉換。使用floyd演算法求每兩種貨幣能夠互相轉換的最大匯率,那麼最後我們判斷每種貨幣轉換為自己時的匯率是否大於1,是的話說明存在套利,否的話則說明本貨幣不存在套利。注意本題是單向圖。

接下來是我的解題**:floyd解法

#include #include #include #define n 31

#define max(a, b) (a > b ? a : b)

int n, m;

double map[n][n]; //儲存匯率

char str[n][n]; //儲存貨幣名稱

void init();

void read();

int count(char s); //計算字串編號

int floyd();

int main()

else

}return 0;

}void init()

}return 0;

}

1217 最後贏家

description 有16只隊伍參加一種淘汰賽,每一場的贏家將參加下一場比賽,而輸家將直接淘汰,現在請你根據比賽情況分析最後的贏家是誰 input 第一行是測試組數c 1 c 100 每組由16行組成,以隨機順序描述了比賽場次及情況,格式是 t 1t 2 g 1 g 2 t 1 和t 2 是隊伍...

學習總結 (12 17)

1.靜態變數的型別說明符是static。類的內部訪問靜態成員必須使用self關鍵字和 操作符 在類的外部訪問靜態成員必須使用類名和操作符 而不需要建立物件。static全域性變數和普通全域性變數區別 static全域性變數只被初始化一次,防止在其他檔案單元中被引用。static變數的好處 不會被其他...

12 17上週效能測試總結

上週進行了認證介面的效能測試 又收穫了很多,有一點和架構搭上了關係 首先整個服務的架構大概是 niginx web服務 gateway cloud 除了cloud是主要處理業務的服務,其他服務都只負則 理論上不會成為瓶頸 根據前期由於各方面由於硬體達到瓶頸而使得測試結果不準確,總結了下正確的測試流程...