HDU-4522 湫湫系列故事——过年回家 最短路
题意:很乱
分析:把数据处理下,dijkstra下就行了,floyd超时了,我还想着优化一下输入,因为使用了vector和string等等,但是计算数据规模后,处理输入的时间复杂度比floyd要低一个数量级,看来还是要换成dijkstra了。
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <string>
using namespace std; const int N = ;
const int inf = 0x3f3f3f3f;
int n, m, D1, D2, A, B;
vector<string>vs[];
int mp1[N][N];
int mp2[N][N]; void conn(int mp[][N], const string & s, int val) {
int t = ;
vector<int>vt;
for (int i = ; i < s.length(); ++i) {
if (s[i] != '+') t = t * + s[i] - '';
else {
vt.push_back(t);
t = ;
}
}
vt.push_back(t);
for (int i = ; i < (int)vt.size(); ++i) {
for (int j = i+; j < (int)vt.size(); ++j) {
mp[vt[i]][vt[j]] = min(mp[vt[i]][vt[j]], val*(j-i));
}
}
} int dis[N];
char vis[N]; int dijkstra(int mp[][N]) {
memset(dis, 0x3f, sizeof (dis));
memset(vis, , sizeof (vis));
dis[A] = ;
for (int i = ; i < n; ++i) {
int Min = inf, p;
for (int j = ; j <= n; ++j) {
if (!vis[j] && Min > dis[j]) {
Min = dis[j];
p = j;
}
}
if (p == B) break;
vis[p] = ;
for (int j = ; j <= n; ++j) {
if (!vis[j] && dis[p]+mp[p][j] < dis[j]) {
dis[j] = dis[p] + mp[p][j];
}
}
}
return dis[B];
} void solve() {
memset(mp1, 0x3f, sizeof (mp1));
memset(mp2, 0x3f, sizeof (mp2));
for (int i = ; i < (int)vs[].size(); ++i) {
conn(mp1, vs[][i], D1);
}
for (int i = ; i < (int)vs[].size(); ++i) {
conn(mp1, vs[][i], D1);
conn(mp2, vs[][i], D2);
}
int ans = min(dijkstra(mp1), dijkstra(mp2));
printf(ans == inf ? "-1\n" : "%d\n", ans);
} int main() {
int T, k;
char str[];
scanf("%d", &T);
while (T--) {
vs[].clear();
vs[].clear();
scanf("%d %d", &n, &m);
for (int i = ; i < m; ++i) {
scanf("%s %d", str, &k);
if (k == ) vs[].push_back(str);
else vs[].push_back(str);
}
scanf("%d %d %d %d", &D1, &D2, &A, &B);
solve();
}
return ;
}
HDU-4522 湫湫系列故事——过年回家 最短路的更多相关文章
- HDU 4532 湫秋系列故事——安排座位 (组合+DP)
湫秋系列故事——安排座位 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- HDU 4539郑厂长系列故事――排兵布阵(状压DP)
HDU 4539 郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 //#pragma co ...
- HDU 4539 郑厂长系列故事——排兵布阵
http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) ...
- HDU 4508 沼泽湿地系列故事——记住减肥I (2013腾讯编程马拉松预赛第一)
pid=4508">http://acm.hdu.edu.cn/showproblem.php?pid=4508 题目大意: 给定一些数据. 每组数据以一个整数n開始,表示每天的食物清 ...
- HDU 4529 郑厂长系列故事——N骑士问题 状压dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4529 郑厂长系列故事--N骑士问题 Time Limit: 6000/3000 MS (Java/O ...
- HDU 4539 郑厂长系列故事——排兵布阵 状压dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事--排兵布阵 Time Limit: 10000/5000 MS (Java/O ...
- hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- hdu 4512 吉哥系列故事——完美队形I【LCIS经典应用】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4512 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU 4513 吉哥系列故事――完美队形II(Manacher)
题目链接:cid=70325#problem/V">[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher V - 吉哥系列故事――完美队形I ...
随机推荐
- chrome下input[type=text]的placeholder不垂直居中的问题解决
http://blog.csdn.net/do_it__/article/details/6789699 <input type="text" placeholder=&qu ...
- select2插件的使用
<select id="prd_tech_for_load" class="selectable" style="width:180px;&qu ...
- Nginx下配置SSL安全协议
生成证书: # cd /usr/local/nginx/conf # openssl genrsa -des3 -out server.key 1024 # openssl req -new -key ...
- 帝国CMS内容模板IF判断
[e:loop={'selfinfo',50,0,0,"jingshu=$navinfor[jingshu]","id"}]<?php$class1=&q ...
- ActiveMQ的使用笔记(基本实现原理)
具体原理不进行深入,会用就好. 第一:当然是先安装ActiveMQ,选择操作系统位数,安装成功以后,输入网址http://ip:8161/admin/,会出现相关页面,账号密码都是admin.在这个页 ...
- mssql手工注入及绕过术
报错注入: - 例子:http://www.kfgtfcj.xxx.cn/lzygg/Zixun_show.aspx?id=1 [1]首先爆版本:http://www.kfgtfcj.xxx.cn ...
- C#文件与流(FileStream、StreamWriter 、StreamReader 、File、FileInfo、Directory、directoryInfo、Path、Encoding)
(FileStream.StreamWriter .StreamReader .File.FileInfo.Directory.DirectoryInfo.Path.Encoding) C#文 ...
- 理解NDCG
关于NDCG,wiki给点解释很详细,这里我谈谈我的理解. NDCG(Normalized discounted cumulative gain):是用来衡量排序质量的指标. 其中一种计算公式如下: ...
- Entity Framework && Lambda
Lambda表达式详细总结 C# 代码了解委托.匿名方法.Lambda 表达式和闭包本质 将使用了C# Lambda表达式的程序集反编译后,我们发现,它实际上和匿名方法没有什么不同.Lambda的输入 ...
- [转] ubuntu开启SSH服务
点击阅读原文 SSH分客户端openssh-client和openssh-server如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo ...