日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ 1860 Currency Exchange

發布時間:2025/6/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 1860 Currency Exchange 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目大意:假設有A,B兩種貨幣,要將A換成B,須透過匯率Rab和手續費Cab,因此實際得到B貨幣=(A-Cab)*Rab元。

第一行輸入N, M, S, V,N表示共有N種貨幣(1<=N<=100),M表示底下有M行,每一行有六個數字A,B,Rab,Cab,Rba,Cab,Rab表示A換成B的匯率,Cab表示A換成B需要扣除的手續費,Rba和Cba同理。現在Nick有第S種貨幣V元,題目問Nick透過不斷交換貨幣,然後最後換回第S種貨幣的時候能否大於V元?

解題思路:Bellman-ford改一改,只要能夠無限松弛,就符合題意(我這里優化了一下Bellman-ford,就是不能松弛了,就退出松弛循環(這道題可以直接判斷不行了), 感覺有點像冒泡的優化

1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #define MAXVERTEXNUM 500 5 #define INF 1000000 6 using namespace std; 7 8 struct E 9 { 10 int a, b; 11 double exchange_currency, tips; 12 }Edge[MAXVERTEXNUM]; 13 int Nv, Ne, s, num = 0; 14 double org, dist[MAXVERTEXNUM]; 15 16 bool Bellman_Ford() 17 { 18 for (int i = 1; i < Nv; ++i) 19 { 20 bool flag = false; 21 for (int j = 0; j < num; ++j) 22 { 23 if (dist[Edge[j].b] < (dist[Edge[j].a] - Edge[j].tips) * Edge[j].exchange_currency) 24 { 25 dist[Edge[j].b] = (dist[Edge[j].a] - Edge[j].tips) * Edge[j].exchange_currency; 26 flag = true; 27 } 28 } 29 if (!flag) 30 return false;//寫break還要快一些,黑人問號??? 31 } 32 33 for (int i = 0; i < num; ++i) 34 if (dist[Edge[i].b] < (dist[Edge[i].a] - Edge[i].tips) * Edge[i].exchange_currency) 35 return true; 36 37 return false; 38 } 39 40 int main() 41 { 42 ios::sync_with_stdio(false); 43 44 cin >> Nv >> Ne >> s >> org; 45 memset(dist, 0, sizeof(dist)); 46 dist[s] = org; 47 //init 48 49 for (int i = 1; i <= Ne; ++i) 50 { 51 int V1, V2; 52 double t1, t2, t3, t4; 53 cin >> V1 >> V2 >> t1 >> t2 >> t3 >> t4; 54 Edge[num].a = V1, Edge[num].b = V2; 55 Edge[num].exchange_currency = t1; 56 Edge[num++].tips = t2; 57 Edge[num].a = V2, Edge[num].b = V1; 58 Edge[num].exchange_currency = t3; 59 Edge[num++].tips = t4; 60 } 61 62 if (Bellman_Ford()) 63 cout << "YES" << endl; 64 else 65 cout << "NO" << endl; 66 67 return 0; 68 }

?

轉載于:https://www.cnblogs.com/ducklu/p/9231563.html

總結

以上是生活随笔為你收集整理的POJ 1860 Currency Exchange的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。