P1576 最小花费

-----------------------------------

这道题就是图论最短路,但是我们要改一下一些细节

比如说,因为这是算汇率,我们的初始化就要是0

我们还要改一改松弛操作

-----------------------------------

还有,题目上给的是汇率(而且是整形)

所以说我们要改成小数

-----------------------------------

以及,汇率是我们在操作中的“损失”

那么,我们留下的部分就是1-汇率(易得)

----------------------------------

DOUBLE警告

----------------------------------

以上就是特别注意

其实还有坑的数据范围100000的数组只能RE

----------------------------------

题目链接:Miku

----------------------------------

#include<iostream>
#include<queue>
#include<stack>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m;
struct bian {
    int to;
    int next;
    double v; //注意,是double
} b[1000010];
double dis[1000010];//double警告
queue<int> q;
int head[1000001];
int pb;
void add(int form,int to,double v) {//double警告
    pb++;
    b[pb].to=to;
    b[pb].v=1-v;//省很多事的
    b[pb].next=head[form];
    head[form]=pb;
}
bool vis[1000001];
int main() {
    memset(dis,0,sizeof(dis));
    cin>>n>>m;
    int x,y,z;
    for(int i=1; i<=m; ++i) {
        cin>>x>>y>>z;
        add(x,y,(double)z/100);
        add(y,x,(double)z/100);//一定要处理成小数
    }
    cin>>x>>y;
    {
        //SPFA部分
        dis[x]=1;
        vis[x]=1;
        q.push(x);//初始化
        {
            while(q.size())    {
                int u=q.front();
                q.pop();
                vis[u]=0;
                for(int i=head[u]; i; i=b[i].next) {
                    int v=b[i].to;
                    if(dis[v]<dis[u]*b[i].v) {//特殊操作
                        dis[v]=dis[u]*b[i].v;//特殊操作
                        {
                            if(!vis[v]) {
                                q.push(v);
                                vis[v]=1;
                            }
                        }
                    }
                }

            }
        }
    }
    double ans=100/dis[y];//double警告
    printf("%.8lf",ans);//小数位数哦
    return 0;
}

AC

------------------------------------

That‘s all.

原文地址:https://www.cnblogs.com/For-Miku/p/11104878.html

时间: 2024-10-10 02:28:46

P1576 最小花费的相关文章

洛谷 P1576 最小花费 dijkstar

P1576 最小花费 题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. 输入输出格式 输入格式: 第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数. 以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100). 最后一行输入两个正整数A,B.数据保证A与B之间可以直接或

洛谷—— P1576 最小花费

P1576 最小花费 题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. 输入输出格式 输入格式: 第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数. 以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100). 最后一行输入两个正整数A,B.数据保证A与B之间可以直接或

Luogu P1576 最小花费

题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. 输入输出格式 输入格式: 第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数. 以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100). 最后一行输入两个正整数A,B.数据保证A与B之间可以直接或间接地转账. 输出格式

第四届CCF软件能力认证(CSP2015) 第五题(最小花费)题解

[问题描述] C国共有$n$个城市.有$n-1$条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达.小R来到C国旅行,他共规划了$m$条旅行的路线, 第$i$条旅行路线的起点是$s_i$,终点是$t_i$.在旅行过程中,小R每行走一单位长度的路需要吃一单位的食物.C国的食物只能在各个城市中买到,而且不同城市的食物价格可能不同. 然而,小R不希望在旅行中为了购买较低价的粮食而绕远路,因此他总会选择最近的路走.现在,请你计算小R规划的每条旅行路线的最小花费是多少. [输入格式] 第一行包含

Poj 2516 Minimum Cost (最小花费最大流)

题目链接: Poj  2516  Minimum Cost 题目描述: 有n个商店,m个仓储,每个商店和仓库都有k种货物.嘛!现在n个商店要开始向m个仓库发出订单了,订单信息为当前商店对每种货物的需求量.不同的商店从不同的仓库购买不同货物花费不同,问是不是能满足所有商店的要求,如果能商店花费总和最小为多少? 解题思路: 简单的费用流,要跑K次最小花费最大流,每次只对一种货物建图跑费用流.每次建图以0为源点, [1,m]为仓库, [m+1, n+m]为商店, n+m+1为汇点.0与[1,m]连边,

FZU 2197 最小花费 (模拟)

[题目链接]:click here~~ [题目大意]: 给一个长度为n(n <= 10^5)的"01"串,你可以任意交换一个为0的位和一个为1的位,若这两位相邻,花费为X,否则花费为Y.求通过若干次交换后将串中的"1"全部变换到"0"前面的最小花费. [解题思路]:看到题以为是道考算法的,想了想,朴素算法O(n^2)绝逼超时啊~~其实模拟一下,因为达到最终状态的只有一种,因此移动的步数是一定的,所以每次交换最前面的0和最后面的1,然后分别记

把一个序列转换成非严格递增序列的最小花费 POJ 3666

1 //把一个序列转换成非严格递增序列的最小花费 POJ 3666 2 //dp[i][j]:把第i个数转成第j小的数,最小花费 3 4 #include <iostream> 5 #include <cstdio> 6 #include <cstdlib> 7 #include <algorithm> 8 #include <vector> 9 #include <math.h> 10 // #include <memory.

把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend

1 //把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend 2 //dp[i][j]:把第i个数转成第j小的数,最小花费 3 //此题与poj 3666相似 a[i]转换成a[i]-i 4 5 #include <iostream> 6 #include <cstdio> 7 #include <cstdlib> 8 #include <algorithm> 9 #include <

hdoj 3072 Intelligence System【求scc&amp;&amp;缩点】【求连通所有scc的最小花费】

Intelligence System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1904    Accepted Submission(s): 824 Problem Description After a day, ALPCs finally complete their ultimate intelligence system