poj1860 解題報告

2021-09-09 04:12:43 字數 762 閱讀 2079

題意:這裡有n種貨幣,分別記為1~n,有m種貨幣交換的方式,每一種方式有a,b兩種錢幣,有rab, cab, rba and cba,四個數,表示交換率,

nick手上有其中的一種貨幣s,貨幣s的錢數為v,問你能否通過一定次數的錢幣交換讓nick手中的錢增加

分析:這裡是要判斷迴路,那麼可以用spfa 加乙個入隊次數的陣列來判別是否有迴路,也可以用bellman,這裡要注意的是,鬆弛操作不能死用模板了,, 要有一點點的轉變,這裡我們可以這樣處理,置 d 這個鬆弛要用到的陣列為0,不是以往的無窮大,新加乙個入隊陣列判迴路 cnt 為0 

那麼直接上馬,附加注釋

// ac 204k 32ms

#include#include#includeusing namespace std;

#define max 101

struct node

edge[max*2];

int head[max],tol;

int n,m,s;

double v;

void add(int st,int end,double r,double c)

void init()

}double d[max];

int cnt[max];//記錄入隊次數

bool flag[max];

bool spfa()

} }return false;

}int main()

個人愚昧觀點 ,歡迎指正與討論

poj1860解題報告 兩種解法

include iostream include fstream include sstream include string include vector using namespace std struct record struct list typedef vector g int n,m,...

POJ 1860判斷正環

題目鏈結 題意 有n種型別的貨幣,m個城市可以兌換兩種貨幣,乙個人手上有v塊s型別的錢,要求判斷是否可以經過若干次兌換後這個人手上的s型別的錢增加了。思路 對於每種貨幣,建立乙個點,兩種貨幣可以交換,則這兩個點之間有一條邊,經過若干次兌換後要回到s型別的錢,則一定存在環,而錢要增加,則需要存在正權環...

poj解題報告 1328

不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...