CSU 1806 Toll
最短路,自适应$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的更多相关文章
- 【最短路】【数学】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), ...
- CSU 1806 Toll 自适应simpson积分+最短路
分析:根据这个题学了一发自适应simpson积分(原来积分还可以这么求),然后就是套模板了 学习自适应simpson积分:http://blog.csdn.net/greatwall1995/arti ...
- csu 1806 & csu 1742 (simpson公式+最短路)
1806: Toll Time Limit: 5 Sec Memory Limit: 128 MB Special JudgeSubmit: 256 Solved: 74[Submit][Sta ...
- [CSU1806]Toll
题目:Toll 传送门:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1806 题目简述:给定n个点m条有向边的有向图,每条边的花费是$b_i ...
- csu 1812: 三角形和矩形 凸包
传送门:csu 1812: 三角形和矩形 思路:首先,求出三角形的在矩形区域的顶点,矩形在三角形区域的顶点.然后求出所有的交点.这些点构成一个凸包,求凸包面积就OK了. /************** ...
- CSU 1503 点到圆弧的距离(2014湖南省程序设计竞赛A题)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 解题报告:分两种情况就可以了,第一种是那个点跟圆心的连线在那段扇形的圆弧范围内,这 ...
- CSU 1120 病毒(DP)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1120 解题报告:dp,用一个串去更新另一个串,递推方程是: if(b[i] > a ...
- CSU 1116 Kingdoms(枚举最小生成树)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1116 解题报告:一个国家有n个城市,有m条路可以修,修每条路要一定的金币,现在这个国家只 ...
- CSU 1113 Updating a Dictionary(map容器应用)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...
随机推荐
- mark_May
嗯神忙的五月总算是过完了. 草草的做完研究性学习,浑浑噩噩的考了数学联赛,以及在考试的上一周还在疯狂的看未闻花名,貌似还有前几个星期不懂是吃错药还是怎样 总急着把2013的题目刷完=-=可是貌似到现在 ...
- c#一个简单的实例告诉你,多继承还可以这么来
我想多继承,要怎么搞???我想你一定会说“接口”,那么你有没有遇到这样的问题,你需要在一个类中继承另外2个类的所有方法,你要怎么做呢???难道要Coyp实现代码?No,往下看... 定义一个空接口比如 ...
- Bug Tracker
Bug Tracker 使用笔记(有图有真相) 目的:管理Bug,完善业务流程. 前提条件:BugTracker是基于IIS和SQL Server和Asp.Net的.相当于一个Web端的管理系统. ...
- 依赖注入DI
说AOP不得不提依赖注入,先来看看一个实例.通过实例来解释依赖注入和它的用途. 我们现在要设计一个关于衣服的上架功能,有时候需要进行促销,我们现在知道的促销方式有打1折,和打2折. 最初的方案: pu ...
- 基于支持向量机的车牌识别-- opencv2.4.7+vs2012环境搭建
环境说明: 环境: OS:win7 sp1 opencv:2.4.7 vs2012 搭建过程: PS:机器上原本已安装vs2012 1.opencv 1.1 下载,直接双击安装即可. 此处我的安装位置 ...
- C#中 如何执行带GO的sql 语句
C#中是不允许执行带GO的sql 语句的, 如何做呢? 思路就是将带GO的sql语句转化为分段执行, 但在同一事务内执行. 扩展方法是个很不错的主意, 但是尽量不要影响原来的cmd的一些东东, 如 c ...
- [置顶] 使用Android OpenGL ES 2.0绘图之六:响应触摸事件
传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.csd ...
- 使用MFC CImage类绘制PNG图片时遇到的问题
为了测试CImage绘制PNG图片的效果,我们用截图软件截得一张360的界面,然后使用PhotoShop等工具在图片的周边加上了透明的区域,然后保存成PNG图片文件.CImage首先从文件中加载,即 ...
- 【转载】Servlet Filter(过滤器)、Filter是如何实现拦截的、Filter开发入门
Servlet Filter(过滤器).Filter是如何实现拦截的.Filter开发入门 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过F ...
- [jQuery]on和bind事件绑定的区别
on和bind事件绑定的区别 一个demo展示 <!DOCTYPE html> <html lang="zh"> <head> <titl ...