CSU 1806: Toll
来源:互联网 发布:太平天国知乎 编辑:程序博客网 时间:2024/05/29 17:18
求对最短路的0~T时间段里的积分,用(自适应辛普森)
#include"cmath"#include"queue"#include"cstdio"#include"cstring"#include"iostream"#include"algorithm"using namespace std;const double eps = 1e-8;const int MX = 15;const int INF = 1<<30;int n,m,T;int c[MX][MX],d[MX][MX];bool vis[MX];double dis[MX];double f(double t){ memset(vis,0,sizeof(vis)); for(int i = 1; i<= n; i++) dis[i] = INF; dis[1] = 0; queue<int> q; q.push(1); while(q.size()){ int u = q.front(); q.pop(); vis[u] = 0; for(int i = 1; i <= n; i++){ int v = i; if(dis[v]-eps > dis[u] + c[u][i]*t+d[u][i]){ dis[v] = dis[u] + c[u][i]*t+d[u][i]; if(vis[v]) continue; q.push(v); vis[v] = 1; } } } return dis[n];}double simpson(double l, double r){ return (r-l)/6*(f(l) + 4*f((l+r)/2) + f(r));}double solve(double l, double r){ double mid = (l+r)/2, now = simpson(l,r); if(fabs(simpson(l,mid) + simpson(mid,r) - now) < eps) return now; else return solve(l,mid) + solve(mid,r);}int main(){ int x,y; while(~scanf("%d%d%d",&n,&m,&T)){ memset(c,0x3f,sizeof(c)); memset(d,0x3f,sizeof(d)); for(int i = 1; i<= m; i++){ scanf("%d%d",&x,&y); scanf("%d%d",&c[x][y],&d[x][y]); } printf("%.8lf\n",solve(0,T)/T); } return 0;}
阅读全文
0 0
- CSU 1806 Toll
- CSU 1806: Toll
- CSU 1806 Toll(自适应simpson积分)
- CSU 1806 Toll (自适应Simpson积分 )
- CSU 1806 Toll(数学+最短路)
- CSU 1806: Toll Simpon积分,最短路
- CSU 1806 Toll(自适应Simpson公式+Dijkstra+priority_queue)
- 【最短路】【数学】CSU 1806 Toll (2016湖南省第十二届大学生计算机程序设计竞赛)
- Toll University
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- 参数(parameters)和超参数(hyperparameters)
- Android ANR问题分析
- .Net,Dll扫盲篇,如何在VS中调试已经编译好的dll?
- MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要区别
- java -length的三种用法
- CSU 1806: Toll
- C++ STL list的初始化、添加、遍历、插入、删除、查找、排序、释放
- 87. Scramble String(三维动态规划+形似map的数组使用技巧)
- 2017.8.20考试
- python 解接口返回的json字符串
- MySQL开启慢查询探究
- CSS小记
- IP地址、子网掩码、网关及DNS地址
- 内存管理工具Memory Analyzer的使用