美团2018年CodeM大赛-初赛B轮 B 配送(最短路)
美团2018年CodeM大赛-初赛B轮 B 配送
题意
题解
对于每个任务,只要从上个任务的终点出发即可。
时间、地点很少,可以算出每个地点-时间的最小花费。
以题目描述的起点终点起始结束时间建图,很暴力的跑最短路即可。
代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define rep(i, a, b) for(int i=(a); i<(b); i++)
#define sz(a) (int)a.size()
#define de(a) cout << #a << " = " << a << endl
#define dd(a) cout << #a << " = " << a << " "
#define all(a) a.begin(), a.end()
#define endl "\n"
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
//---
const int inf = 2e9;
int n, m, k;
struct Task {
int pos;
string tim;
bool operator < (const Task &c) const {
return tim < c.tim;
}
}task[11];
struct Edge {
int v, p;
string st, ed;
Edge(int v, int p, string st, string ed) : v(v), p(p), st(st), ed(ed) {}
};
vector<Edge> g[111];
map<string, int> dis[111];
void dij(int pos, string tim) {
rep(i, 1, k+1) dis[i].clear();
dis[pos][tim] = 0;
priority_queue<pair<int, pair<int, string> > > que;
que.push(mp(0, mp(pos, tim)));
while(!que.empty()) {
auto u = que.top(); que.pop();
int d = -u.fi;
pos = u.se.fi; tim = u.se.se;
if(d != dis[pos][tim]) continue;
for(auto i : g[pos]) {
int v = i.v, p = i.p;
int t = dis[pos][tim] + p;
if(tim < i.st && (!dis[v].count(i.ed) || dis[v][i.ed] > t)) {
dis[v][i.ed] = t;
que.push(mp(-t, mp(v, i.ed)));
}
}
}
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0);
cin >> n >> m >> k;
rep(i, 0, n) {
string s1, s2;
cin >> task[i].pos >> s1 >> s2;
task[i].tim = s1 + " " + s2;
}
sort(task, task+n);
rep(i, 0, m) {
int u, v, p;
string st, ed;
cin >> u >> v >> p >> st >> ed;
rep(j, 1, 8) {
string t1 = "2018.07.0" + to_string(j) + " " + st;
string t2 = "2018.07.0" + to_string(j) + " " + ed;
g[u].pb(Edge(v, p, t1, t2));
}
}
int pos = 1, ans = 0;
string tim = "2018.06.30 23:59:59.999";
rep(i, 0, n) {
dij(pos, tim);
int res = inf;
for(auto j : dis[task[i].pos]) {
if(j.fi < task[i].tim) res = min(res, j.se);
else break;
}
if(res == inf) {
ans = inf;
break;
}
ans += res;
pos = task[i].pos;
tim = task[i].tim;
}
if(ans == inf) ans = -1;
cout << ans << endl;
return 0;
}
美团2018年CodeM大赛-初赛B轮 B 配送(最短路)的更多相关文章
- 美团2018年CodeM大赛-初赛B轮 C题低位值
试题链接:https://www.nowcoder.com/acm/contest/151/C 定义lowbit(x) =x&(-x),即2^(p-1) (其中p为x的二进制表示中,从右向左数 ...
- 美团2017年CodeM大赛-初赛B轮-黑白树
https://ac.nowcoder.com/acm/problem/13249 链接:https://ac.nowcoder.com/acm/problem/13249来源:牛客网 题目描述 一棵 ...
- 美团2017年CodeM大赛-初赛B轮 黑白树 (树形dp)
大意: 给定树, 初始每个点全为白色, 点$i$有权值$k_i$, 表示选择$i$后, 所有距离$i$小于$k_i$的祖先(包括i)会变为黑色, 求最少选多少个点能使所有点变为黑色. 链上情况的话, ...
- 美团2017年CodeM大赛-初赛A轮 C合并回文子串
区间dp一直写的是递归版本的, 竟然超时了, 学了一下非递归的写法. #include <iostream> #include <sstream> #include <a ...
- 美团2018年CodeM大赛-资格赛 分数 暴力模拟
链接:https://www.nowcoder.com/acm/contest/138/D来源:牛客网 小胖参加了人生中最重要的比赛——MedoC资格赛.MedoC的资格赛由m轮构成,使用常见的“加权 ...
- 美团2018年CodeM大赛-资格赛
https://www.nowcoder.com/acm/contest/138#question A.下单 水题…… B.可乐 题意:求期望 代码: #include<iostream> ...
- 2018美团CodeM编程大赛初赛B轮 A题开关灯
题目描述 美团的办公室一共有n层,每层有m个会议室,可以看成是一个n*m的网格图.工程师们每天的工作需要协作的地方很多,经常要到会议室开会解决各种问题.公司是提倡勤俭节约的,因此每次会议室只在使用时才 ...
- CodeM美团点评编程大赛初赛A轮
因为语文太差弃赛,第一个追及问题看不懂我就弃赛了.打进复赛确实挺难的,补一下题,锻炼下就行了. 身体训练 时间限制:1秒 空间限制:32768K 美团外卖的配送员用变速跑的方式进行身体训练.他们训练的 ...
- codeM美团编程大赛初赛B轮D题
[编程题] 模 时间限制:1秒空间限制:32768K 给定四个正整数a,b,c,k,回答是否存在一个正整数n,使得a*n在k进制表示下的各位的数值之和模b为c.输入描述:第一行一个整数T(T < ...
随机推荐
- 大数据sql引擎
Hive:把sql解析后用MapReduce跑 SparkSQL:把sql解析后用Spark跑,比hive快点 Phoenix:一个绕过了MapReduce运行在HBase上的SQL框架 Drill/ ...
- ios手势识别代理
之前做优质派时写了个仿网易新闻导航的第三方,由于当时做项目时这个主控制器就是RootViewController,虽然用的是ScrollView但也没考虑到导航栏的手势返回的问题 ,现在做小区宝3.0 ...
- IOS runtime动态运行时一
对运行时不太了解,今天小伙伴橄榄油陈高给发了个链接 ,看了一部分先存着以后慢慢品 http://www.cocoachina.com/ios/20141018/9960.html http://blo ...
- Java jxl导入excel文件,导入的数字、身份证号码、手机号变成了科学计数法,解决方案
原文出自:https://blog.csdn.net/seesun2012 这是一个execl文件导入数据库操作,使用jxl解析execl导入数据库过程出现了科学计数法,与想要导入的数据不匹配,以下是 ...
- 一键LNMP文件
https://lnmp.org/ LNMP相关软件安装目录Nginx 目录: /usr/local/nginx/MySQL 目录 : /usr/local/mysql/MySQL数据库所在目录:/u ...
- Fork开源项目之通讯框架
项目发布于:https://github.com/HouZhiHouJue/IOCPMSG.看代码前请先看简介.
- C#Json数据类型
引用所对应框架的类库文件,下载地址:http://json.codeplex.com/ 在一般处理程序axhx中: 引用的命名空间: using System.IO;using Newtonsoft. ...
- java ThreadLocal(应用场景及使用方式及原理)
尽管ThreadLocal与并发问题相关,可是很多程序猿只将它作为一种用于"方便传參"的工具,胖哥觉得这或许并非ThreadLocal设计的目的,它本身是为线程安全和某些特定场景的 ...
- 阿里云CentOS7.3配置Java Web应用和Tomcat步骤
阿里云的Linux系统包括CentOS7.3配置了密钥对 怎样将自己ECS实例绑定密钥对,并启用秘钥: https://help.aliyun.com/document_detail/51798.ht ...
- python Tensorflow 实现图像的卷积处理
1.convolution.py import numpy as np from sklearn.datasets import load_sample_images import tensorflo ...