P1576 最小花費

2021-09-07 10:24:47 字數 2290 閱讀 6580

在n個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後b收到100元。

輸入格式:

第一行輸入兩個正整數n,m,分別表示總人數和可以互相轉賬的人的對數。

以下m行每行輸入三個正整數x,y,z,表示標號為x的人和標號為y的人之間互相轉賬需要扣除z%的手續費 (z<100)。

最後一行輸入兩個正整數a,b。資料保證a與b之間可以直接或間接地轉賬。

輸出格式:

輸出a使得b到賬100元最少需要的總費用。精確到小數點後8位。

輸入樣例#1:

3 3                                     

1 2 1

2 3 2

1 3 3

1 3

輸出樣例#1:

103.07153164
1<=n<=2000

思路:一開始乖乖的打了個dijkstra記錄路徑然後慢慢求最後才發現好扯淡也就能過個樣例

正確做法是求出每個邊的權重然後直接暴力

注意因為有除法的存在所以大於號小於號可能和平常的dijkstra相反

0分**

1 #include2 #include3 #include4

using

namespace

std;

5int map[3000][3000];6

double money=100;7

int dis[3000];8

int maxn=0x7fffff;9

int pass[3000

];10

int vis[3000

];11

intn,m;

12int ans[1001

];13

void print(int bg,int

ed)14

26 ans[now]=bg;

27int qq=ed;

28for(int i=2;i<=now;i++)

2932 printf("

%.8lf

",money);33}

34void dijkstra(int

p)35

42for(int i=1;i<=n;i++)

4353

}54 vis[k]=1;55

for(int j=1;j<=n;j++)

5662}63

}64}65

intmain()

6676

inta,b;

77 scanf("

%d%d

",&a,&b);

78dijkstra(b);

79print(b,a);

80return0;

81 }

view code

ac**

1 #include2

#define maxn 2001

3#define inf 99999

4using

namespace

std;

5int

n,m,a,b;

6double

m[maxn][maxn];

7int

main()

822 cin>>a>>b;

23 a--; b--;

24//

dijkstra

25double dis[maxn]; //

dis i:money needed to trans 100 to i

26bool

book[maxn];

27 book[b]=true;28

for (i=0;i)

2933

for (j=0;j)

3443 book[nmin]=true; //

record in book

44for (i=0;i)

45if (min/m[nmin][i]//

relax

46 dis[i]=min/m[nmin][i];47}

48 cout.precision(8

);49 cout<

50return0;

51 }

view code

洛谷P1576 最小花費

在n個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後b收到100元。輸入格式 第一行輸入兩個正整數n,m,分別表示總人數和可以互相轉賬的人的對數。以下m行每行輸入三個正整數x,y,z,表...

洛谷 P1576 最小花費

題目戳 題目描述 在n個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後b收到100元。輸入輸出格式 輸入格式 第一行輸入兩個正整數n,m,分別表示總人數和可以互相轉賬的人的對數。以下m行...

P1576 最小花費 洛谷

在n個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後b收到100元。輸入格式 第一行輸入兩個正整數n,m,分別表示總人數和可以互相轉賬的人的對數。以下m行每行輸入三個正整數x,y,z,表...