最短路,自适应$Simpson$积分。

看了别人的题解才知道有个东西叫自适应$Simpson$积分。

有这样一个积分公式:$\int_a^b {f(x)dx}  \approx \frac{{b - a}}{6}\left[ {f(a) + 4f\left( {\frac{{a + b}}{2}} \right) + f(b)} \right]$。这个东西用于计算不方便直接积分的时候的近似积分。

由于直接套公式会与实际有很大偏差,有一个改进:

要求$[L,R]$的积分,先令$m = \frac{{L + R}}{2}$,根据上面的公式,求出$[L,R]$的公式值${s_0}$,以及$[L,m]$的公式值${s_1}$,$[m,R]$的公式值${s_2}$。

如果${s_0}$与${s_1} + {s_2}$很接近,那么可以认为$[L,R]$的积分就是${s_0}$;否则进行递归,分别求$[L,m]$的积分和$[m,R]$的积分。

知道了这个东西之后,这题就变成水题了......

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0),eps=1e-;
void File()
{
freopen("D:\\in.txt","r",stdin);
freopen("D:\\out.txt","w",stdout);
}
template <class T>
inline void read(T &x)
{
char c = getchar(); x = ;while(!isdigit(c)) c = getchar();
while(isdigit(c)) { x = x * + c - ''; c = getchar(); }
} int n,m,T;
struct Edge{int u,v,c,d,nx;}e[];
int h[],sz; void add(int u,int v,int c,int d)
{
e[sz].u=u; e[sz].v=v; e[sz].c=c; e[sz].d=d;
e[sz].nx=h[u]; h[u]=sz++;
} double SPFA(double x)
{
double dis[]; bool flag[];
for(int i=;i<=n;i++) dis[i]=999999999999.0;
memset(flag,,sizeof flag);
queue<int>Q; flag[]=; Q.push(); dis[]=;
while(!Q.empty())
{
int top=Q.front(); Q.pop(); flag[top]=;
for(int i=h[top];i!=-;i=e[i].nx)
{
if(dis[top]+e[i].c*x+e[i].d<dis[e[i].v])
{
dis[e[i].v]=dis[top]+e[i].c*x+e[i].d;
if(flag[e[i].v]==)
{
flag[e[i].v]=;
Q.push(e[i].v);
}
}
}
}
return dis[n];
} double get(double L,double R)
{
return (R-L)*(SPFA(L)+*SPFA((L+R)/)+SPFA(R))/;
} double Ans(double L,double R)
{
double m=(L+R)/;
double s0,s1,s2;
s0=get(L,R); s1=get(L,m); s2=get(m,R);
if(fabs(s0-(s1+s2))<=eps) return s0;
else return Ans(L,m)+Ans(m,R);
} int main()
{
while(~scanf("%d%d%d",&n,&m,&T))
{
memset(h,-,sizeof h); sz=;
for(int i=;i<=m;i++)
{
int u,v,c,d; scanf("%d%d%d%d",&u,&v,&c,&d);
add(u,v,c,d);
}
printf("%.8lf\n",Ans(,1.0*T)/T);
}
return ;
}

CSU 1806 Toll的更多相关文章

  1. 【最短路】【数学】CSU 1806 Toll (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1806 题目大意: N个点M条有向边,给一个时间T(2≤n≤10,1≤m≤n(n-1), ...

  2. CSU 1806 Toll 自适应simpson积分+最短路

    分析:根据这个题学了一发自适应simpson积分(原来积分还可以这么求),然后就是套模板了 学习自适应simpson积分:http://blog.csdn.net/greatwall1995/arti ...

  3. csu 1806 & csu 1742 (simpson公式+最短路)

    1806: Toll Time Limit: 5 Sec  Memory Limit: 128 MB  Special JudgeSubmit: 256  Solved: 74[Submit][Sta ...

  4. [CSU1806]Toll

    题目:Toll 传送门:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1806 题目简述:给定n个点m条有向边的有向图,每条边的花费是$b_i ...

  5. csu 1812: 三角形和矩形 凸包

    传送门:csu 1812: 三角形和矩形 思路:首先,求出三角形的在矩形区域的顶点,矩形在三角形区域的顶点.然后求出所有的交点.这些点构成一个凸包,求凸包面积就OK了. /************** ...

  6. CSU 1503 点到圆弧的距离(2014湖南省程序设计竞赛A题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 解题报告:分两种情况就可以了,第一种是那个点跟圆心的连线在那段扇形的圆弧范围内,这 ...

  7. CSU 1120 病毒(DP)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1120 解题报告:dp,用一个串去更新另一个串,递推方程是: if(b[i] > a ...

  8. CSU 1116 Kingdoms(枚举最小生成树)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1116 解题报告:一个国家有n个城市,有m条路可以修,修每条路要一定的金币,现在这个国家只 ...

  9. CSU 1113 Updating a Dictionary(map容器应用)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...

随机推荐

  1. 安装mysql-python报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 65: ordinal not in range(128)

    安装mysql-python报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 65: ordinal n ...

  2. github 出现 Permission denied (publickey)的解决

    从github上clone的时候出现了以下错误 应该是ssh key过期了,试着重新创建ssh key,按以下步骤 1.  注意短横线前后都没有空格 接着一切都默认,它会在把ssh key 储存在 C ...

  3. 使用C++做算法时,对内存的管理的办法

    使用C++做算法时,对内存的管理的办法 最近老是在想C++的内存控制机制,查了一些资料所以有点想法,自己记录一下免得以后自己忘了. 1. 需求 在做线性代数的算法时,首要的就实现Matrix这个类.由 ...

  4. visio UML用例里面找不到include关系

    今天用Microsoft Visio 2007画用例图时,发现visio UML用例里面找不到include关系,查到一个可行的解决办法:  1)创建一个UML用例图模板:打开Microsoft Vi ...

  5. 用PowerShell代替批处理吧!

    这篇文章主要介绍了用PowerShell代替批处理吧!本文讲解了批处理文件的历史.Windows NT 和 Cmd.exe.Windows Script 主机.进入 Windows PowerShel ...

  6. iOS核心应用对象

    IOS应用之设计模式:模型-视图-控制器 iOS应用与其它应用的区别就在于它所管理的数据(和相应的业务逻辑)以及将数据展现给用户的方式.大多数UIKit对象并不定义应用而是帮助完善其行为.例如,你的应 ...

  7. 64位linux报错Could not initialize class java.awt.image.BufferedImage

    最近碰到一个问题: 64位linux报错Could not initialize class java.awt.image.BufferedImage 在WIN平台下运行正常BufferedImage ...

  8. 结构-行为-样式-Js排序算法之 快速排序

    快速排序算法,是我的算法系列博客中的第二个Js实现的算法,主要思路:    在一个数组中随机取一个数(一般都取第一个或者最后一个),使这个数与数组中其他数进行比较,如果比它大就放到它的右边,比它小就放 ...

  9. 如何在网站中加入markdown

    在vue组件中加入markdown,模板使用的是webpack 我是这样做的: 因为是npm引入的,所以markdown是遵循CommonJS规范的,需要在webpack.base.conf.js里引 ...

  10. 办理滑铁卢大学(本科)学历认证『微信171922772』UW学位证成绩单使馆认证University of Waterloo

    办理滑铁卢大学(本科)学历认证『微信171922772』UW学位证成绩单使馆认证University of Waterloo QQ/微信171922772办理毕业证成绩单.真实使馆及教育部学历认证★诚 ...