luoguP1576 最小花费
题目描述
在n个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。
输入输出格式
输入格式:
第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数。
以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100)。
输出A使得B到账100元最少需要的总费用。精确到小数点后8位。
输入输出样例
3 3 1 2 1 2 3 2 1 3 3 1 3
103.07153164
说明
1<=n<=2000,m<=100000
题意很好理解就是很常见的题目方法有很多,最近几天和STL有不解之缘于是又写了STL大法QwQ;
主要的问题还是精度的问题,还有就是手续费改收益率的方法注意连双向边;
#include<bits/stdc++.h>
#define N 2005
#define M 100005
#define INF 1e8
using namespace std;
struct edge{int Next,vet;double val;
}g[M<<1];
int tot,head[N];
void add(int x,int y,double z){tot++;g[tot]=((edge){head[x],y,z});head[x]=tot;
}
int n,m,s,t;
struct node{double d;int u;bool operator <(const node &rhs)const{return d>rhs.d;}
};
double d[N];
void Dijkstra(int s){priority_queue <node> q;for(int i=1;i<=n;i++)d[i]=INF;d[s]=100;q.push((node){100,s});while(!q.empty()){node x=q.top();q.pop();int u=x.u;if(d[u]!=x.d)continue;for(int i=head[u];i;i=g[i].Next){int v=g[i].vet;if(d[v]>d[u]/g[i].val){d[v]=d[u]/g[i].val;q.push((node){d[v],v});}}}
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);double q=1-(double)c/100;add(a,b,q);add(b,a,q);}scanf("%d%d",&s,&t);Dijkstra(s);printf("%.8lf",d[t]);return 0;
}
luoguP1576 最小花费相关推荐
- hdu4122 制作月饼完成订单的最小花费
题意: 有一个加工厂加工月饼的,这个工厂一共开业m小时,2000年1月1日0点是开业的第一个小时,每个小时加工月饼的价钱也不一样,然后每个月饼的保质期都是t天,因为要放在冰箱里保存,所以在 ...
- ZOJ3715 竞选班长求最小花费
题意: 有n个小朋友竞选班长,一号想当班长,每个人都必须选择一个人当班长,并且不可以选择自己,并且每个人都有一个权值ai,这个权值就是如果1想让这个人改变主意选择自己当班长就得给他ai个糖 ...
- LeetCode-动态规划基础题-746. 使用最小花费爬楼梯
描述 746.使用最小花费爬楼梯 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始). 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应 ...
- 1230: 最小花费(spfa)
1230: 最小花费 时间限制: 1 Sec 内存限制: 128 MB 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除 ...
- LeetCode Algorithm 746. 使用最小花费爬楼梯
746. 使用最小花费爬楼梯 Ideas 首先确定题目类型,爬楼梯问题,并且给定了状态转移的限制,其实就已经可以确定状态转移方程了. 然后题目说可以从下标为0或下标为1的台阶开始爬,所以我们可以定义两 ...
- 【例4-4】最小花费
[例4-4]最小花费 链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1344 时间限制: 1000 ms 内存限制: 65536 ...
- 算法题目——使用最小花费爬楼梯(动态规划)
题目链接:746.使用最小花费爬楼梯 方法:动态规划 假设数组cost的长度为n,则n个阶梯分别对应下标0到n- 1,楼层顶部对应下标n,问题等价于计算达到下标n的最小花费.可以通过动态规划求解. 创 ...
- 【最短路】【Dijkstra】【图论】最小花费(jzoj 2125)
最小花费 题目大意: n个人,一些人之间可以相互转账,但又手续费x%,问A转给B100元至少要多少钱 样例输入 3 3 1 2 1 2 3 2 1 3 3 1 3 样例输出 103.07153164 ...
- 【图论】【最短路】【Dijkstra】最小花费(ssl 2206/luogu 1576)
最小花费 ssl 2206 luogu 1576 题目大意: 有n个人,他们之间有m对人可以相互{\color{red}相互}相互转账,但要收一定的税,求第x个人转给第y个人至少要多少钱 Descri ...
最新文章
- 图片过渡效果一例 使用bitmapData操作
- g++ 安装python_mac编译安装faiss
- Web应用扫描测试工具Vega
- C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)
- phpstrom php出现404
- 暂无,进程那篇深度不够
- JavaScript产生一个n到m之间的随机数
- 杂牌手柄模拟xboxone手柄_手机就能玩Switch游戏,蛋蛋模拟器+盖世小鸡X2手柄体验...
- Qt文档阅读笔记-Qt Quick Examples - Text 初步解析
- Flutter Fish-Redux插件入门指南
- Win10 系统字体美化
- C语言根号作用,c语言中如何开根号运算
- 实现闲鱼自动化脚本-方案对比分析
- win10 yolov5 tensorRT 部署
- 批量修改文件夹或文件名称
- Win10怎么通过ip添加网络打印机?
- 飞机订票管理系统C语言课程设计
- Android中使用ToggleButton(开关按钮)按钮实现的灯泡开关效果
- js ajax上传文件功能
- MapInfo版本选择与使用
热门文章
- 1028 人口普查(C++实现)
- 国际贸易基础(五)报价
- Unity打包AB资源(傻瓜式)
- 计算机教室条幅文字,高中教室横幅标语大全
- (4)centos 7 下载安装
- 将优酷视频订阅到Google Reader的方法
- 元芳,你怎么看,网络为何会如此流行!
- 搭建springboot应用,运行报错:Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd
- 【考研—网络安全】引言(基本概念)
- 成都新都区高新技术企业认定申请流程条件及申报奖励补助