bzoj1375 双调路径
bzoj1375 双调路径
Description
Input
Output
Sample Input
2 1 2 1
3 4 3 1
2 3 1 2
3 1 1 4
2 4 2 4
Sample Output
HINT
这道题的题面描述有些问题。
只要一条路没有其他路时间比他短并且花费比他少,那么它就是最优双调路径。
我们令dis[i][j]表示走到i点,话费了j元的最小时间(其实你也可以反过来,走到i点,花了j时间的最小话费)
可以得到dis[to][j+v[i]]=max(dis[to][j+v[i]],dis[i][j]+t[i]);
代码如下,细节比较少,很好写。
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <cstdlib> #include <queue> #include <stack> #include <vector> using namespace std; #define MAXN 100010 #define INF 2139062143 #define MOD 10000007 #define LL long long #define in(a) a=read() #define REP(i,k,n) for(int i=k;i<=n;i++) #define DREP(i,k,n) for(int i=k;i>=n;i--) #define cl(a) memset(a,0,sizeof(a)) inline int read(){int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';return x*f; } inline void out(int x){if(x<0) putchar('-'),x=-x;if(x>9) out(x/10);putchar(x%10+'0'); } queue <pair<int,int> > Q; int n,m,sta,des,ans=0,minn=INF; int dis[110][110*110],vis[110][110*110]; int total=0,head[110],to[1010],nxt[1010],t[1010],v[1010]; inline void adl(int a,int b,int c,int d){total++;to[total]=b;v[total]=c;t[total]=d;nxt[total]=head[a];head[a]=total;return ; } inline void SPFA(int s){memset(dis,127,sizeof(dis));dis[s][0]=0;vis[s][0]=1;Q.push(make_pair(s,0));while(!Q.empty()){pair<int,int> k=Q.front();Q.pop();int u=k.first,w=k.second;vis[u][w]=0;for(int e=head[u];e;e=nxt[e]){int nw=w+v[e];if(nw<=10000 && dis[to[e]][nw]>dis[u][w]+t[e]){dis[to[e]][nw]=dis[u][w]+t[e];if(!vis[to[e]][nw]){vis[to[e]][nw]=1;Q.push(make_pair(to[e],nw));}}}}return ; } int main(){int a,b,c,d;in(n);in(m);in(sta);in(des);REP(i,1,m){in(a);in(b);in(c);in(d);adl(a,b,c,d);adl(b,a,c,d);}SPFA(sta);REP(i,0,10000)if(dis[des][i]<minn){minn=dis[des][i];ans++;}out(ans);return 0; }
bzoj1375 双调路径相关推荐
- BOI 2002 双调路径
题目: 城市的道路是双向的,每条道路有固定的旅行时间以及需要支付的费用.路径由连续的道路组成.总时间是各条道路旅行时间的和,总费用是各条道路所支付费用的总和.同样的出发地和目的地,如果路径A比路径B所 ...
- P2770 航空路线问题(网络流)
P2770 航空路线问题 似乎是一个经典的双调路径问题,然后这里使用网络流解决了,本质上要求两条路径没有经过同一个点,并且总长度最大,所以我们实际上可以跑网络流,然后拆点限制路径没有交点.
- 《信息学奥赛一本通》提高版题单
第一部分 基础算法 第 1 章 贪心算法 #10000 「一本通 1.1 例 1」活动安排 #10001 「一本通 1.1 例 2」种树 #10002 「一本通 1.1 例 3」喷水装置 #10003 ...
- CLRS第十五章思考题1-4
思考题15-1 注意到此题是说有向无环图,因此存在动态规划算法计算最长加权简单路径. 设 dis[u]dis[u] 表示从 uu 到 tt 的最长加权简单路径,可以得到如下式子: dis[u]={0m ...
- 《算法艺术与信息学竞赛》题目-提交方式对照表 [转]
id title how2submit source page 1 盒子里的气球 8 2 图书馆 ural1188 9 3 钓鱼 uva757 pas 13 4 照亮的 ...
- LOJ 一本通一句话题解系列:
第一部分 基础算法 第 1 章 贪心算法 1):「一本通 1.1 例 1」活动安排:按照结束时间排序,然后扫一遍就可以了. 2):「一本通 1.1 例 2」种树:首先要尽量的往区间重叠的部分种树,先按 ...
- 求职面试算法总结(感谢用心整理的小伙伴)
1,strcpy//返回的是目标串的地址,这样支持连续的运算表达式,已测试 char *strcpy(char *strDest, const char *strSrc){//源串一定要const修饰 ...
- 一本通提高篇在线提交地址
一本通提高篇 1 基础算法 1.1 贪心算法 1.1.1 P2018 [第一章例题1.1]活动安排正确: 9 提交: 17 比率: 52.94 % 1.1.2 P2021 [第一章例题1.2]种树正 ...
- 双调TSP问题通俗讲解
欧几里得旅行商问题是对平面上给定的n个点确定一条连接各点的最短闭合旅程的问题,下图a给出了7个点问题的解.这个问题的一般形式是NP完全的,故其解需要多于多项式的时间. ...
最新文章
- 省委书记表态:以“倾省之力”,支持中国科大建国际校区!
- android 类似按键精灵脚本_按键精灵【第一期】教你 0 基础学写脚本 ———— 【金猪教程】...
- CRM订单上状态字段在UI的显示逻辑
- UNIX网络编程——解决TCP网络传输“粘包”问题
- JavaScript之event事件
- Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?
- .Net 中的序列化与反序列化[概述]
- sql server计算日期到当前日期天数_Excel必学的7个计算日期间隔差的技巧
- c++ vector向量
- movingpandas时空数据分析——旧金山出租车轨迹数据集处理
- 我的世界服务器附魔修改器,[娱乐|RPG]NshowEnchant —— 一个简单附魔插件[1.7.10-1.12.2]...
- 满分室间质评之GATK Somatic SNV+Indel+CNV+SV(下)性能优化
- Mysql中嵌套查询和连接查询的区别
- 项目实战:Qt贝塞尔曲线拽托顶点实时显示工具
- 1056:点和正方形的关系(C C++)
- E: 无法定位软件包 mjepgtools
- getline()详解
- 【Linux防火墙】iptables基础用法及高级用法
- Android车载应用开发与分析(13)- 系统设置-蓝牙设置
- 填写运算符判断等式是否成立