显然,我们可以将询问按照规定时间从小到大排序,依次处理.

那么我们显然要求合法的点中从 $n$ 号点出发到达点 $i$ 的最迟时间,我们令这个为 $f[i]$

而 $f[i]$ 显然可以用最短路来求.

如果求 $n$ 次最短路的话显然超时,但是我们可以对于每一个节点所连边排序,然后每次枚举之前没有扩展过的边.

这样就能保证每条边恰好被扩展一次,时间复杂度正确.

code:

#include <bits/stdc++.h>
#define N 200004
#define inf 1000000004
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int cur,n,m;
int f[N],done[N],tag[N],ans[N];
struct Node {
int u,dis;
Node(int u=0,int dis=0):u(u),dis(dis){}
bool operator<(Node b) const { return b.dis>dis; }
};
struct ask {
int id,tim;
ask(int id=0,int tim=0):id(id),tim(tim){}
}as[N];
struct edge {
int to,st,ed;
edge(int to=0,int st=0,int ed=0):to(to),st(st),ed(ed){}
};
bool cmp_as(ask a,ask b) {
return a.tim<b.tim;
}
bool cmp(edge a,edge b) {
return a.ed<b.ed;
}
vector<edge>G[N];
priority_queue<Node>q;
void dij() {
while(!q.empty()) {
Node e=q.top(); q.pop();
int u=e.u;
if(done[u]==cur) continue;
done[u]=cur;
for(int i=tag[u];i<G[u].size();++i,++tag[u]) {
if(G[u][i].ed>f[u]) break;
int v=G[u][i].to;
if(f[v]<G[u][i].st) {
f[v]=G[u][i].st;
q.push(Node(v,f[v]));
}
}
}
}
void solve(int t) {
f[n]=t;
q.push(Node(n,f[n]));
dij();
}
int main() {
// setIO("input");
int i,j;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i) {
int a,b,x,y;
scanf("%d%d%d%d",&a,&b,&x,&y);
G[b].push_back(edge(a,x,y));
}
memset(f,-1,sizeof(f));
f[n]=0;
for(i=1;i<=n;++i) {
sort(G[i].begin(),G[i].end(),cmp);
}
int Q;
scanf("%d",&Q);
for(i=1;i<=Q;++i) {
as[i].id=i;
scanf("%d",&as[i].tim);
}
sort(as+1,as+1+Q,cmp_as);
for(i=1;i<=Q;++i) {
cur=i;
solve(as[i].tim);
ans[as[i].id]=f[1];
}
for(i=1;i<=Q;++i)
printf("%d\n",ans[i]);
return 0;
}

  

BZOJ 4239: 巴士走读 最短路的更多相关文章

  1. 「JOISC 2014 Day1」巴士走读

    「JOISC 2014 Day1」巴士走读 将询问离线下来. 从终点出发到起点. 由于在每个点(除了终点)的时间被过来的边固定,因此如果一个点不被新的边更新,是不会发生变化的. 因此可以按照时间顺序, ...

  2. bzoj 1295 最长距离 - 最短路

    Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...

  3. BZOJ 2763 分层图最短路

    突然发现我不会分层图最短路,写一发. 就是同层中用双向边相连,用单向边连下一层 #include <cstdio> #include <algorithm> #include ...

  4. BZOJ 2763: [JLOI2011]飞行路线 最短路

    2763: [JLOI2011]飞行路线 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  5. BZOJ 2750: [HAOI2012]Road( 最短路 )

    对于每个点都跑最短路, 然后我们得到了个DAG, 在这DAG上更新每条边的答案. 考虑e(u, v)∈DAG对答案的贡献:  假设从S到u得路径数为A[u], 从v出发到达任意点的路径数为B[v], ...

  6. BZOJ.2069.[POI2004]ZAW(最短路Dijkstra 按位划分)

    题目链接 \(Description\) 给定一张带权图(边是双向的,但不同方向长度不同).求从1出发,至少经过除1外的一个点,再回到1的最短路.点和边不能重复经过. \(n\leq5000,m\le ...

  7. BZOJ 1003 - 物流运输 - [最短路+dp]

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1003 Time Limit: 10 Sec Memory Limit: 162 MB D ...

  8. BZOJ4239 : 巴士走读

    考虑按时刻从早到晚模拟,计算出 f[i]:到达i点的最晚出发时间 g[i]:为了赶上第i辆车的最晚出发时间 然后将所有到达n号点的巴士按到达时间排序,查询的时候二分查找即可. 时间复杂度$O(n\lo ...

  9. BZOJ 1922--大陆争霸(最短路)

    1922: [Sdoi2010]大陆争霸 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2113  Solved: 947[Submit][Status ...

随机推荐

  1. Codeforces 1117C Magic Ship (二分)

    题意: 船在一个坐标,目的地在一个坐标,每天会有一个风向将船刮一个单位,船也可以移动一个单位或不动,问最少几天可以到目的地 思路: 二分天数,对于第k天 可以分解成船先被吹了k天,到达坐标(x1+su ...

  2. 谈python3的封装

    这章给大家介绍,如何封装一个简单的python库 首先创建一个以下型式的文件结构 rootFile/ setup.py example_package/ __init__.py example_mod ...

  3. Ansible: hosts文件拆分为inventory和定义inventory全局变量

    前言 随着管理机器的增多,我们在使用Ansible的时候时常会遇到hosts文件过于冗长的问题,极其不便于管理,而将hosts文件拆分为inventory就可解决该问题:另外,hosts中的每个主机条 ...

  4. Mysql设置创建时间字段和更新时间字段自动获取时间,填充时间

    1.引言在实际开发中,每条数据的创建时间和修改时间,尽量不需要应用程序去记录,而由数据库获取当前时间自动记录创建时间,获取当前时间自动记录修改时间. 2.创建语句(1)–添加CreateTime 设置 ...

  5. 大话IDL之(基本操作流程)

    这里将对ENVI-IDL二次开发程序的一个通用流程做一个总结. 1.首先是文件打开和数据读取: 文件打开work_dir = dialog_pickfile(title='选择路径',/directo ...

  6. ELF文件之三——使用链接脚本-2个函数

    main.c int main() { ; } int add() { ; } main.o的比较 与之二相比,section header offset由0x90变为0xA4,增加0x14,即add ...

  7. PDO连接不上又不报错的问题

    前提:连接PDO需要在将php.ini配置文件的 ;extension=pdo_mysql,去掉前面的;号. 今天闲来无事就重新弄了一下PDO,结果怎么都连不上.而且没有给出错误的信息.代码如下: & ...

  8. axios中get请求的params参数中带数组的处理方法

    axios中get请求的params参数中带数组时导致向后台传参失败报错:from origin 'http://localhost:8080' has been blocked by CORS po ...

  9. 寒假答辩作品:Java小游戏

    目录 java入门小游戏[test] 游戏界面 前言 (可直接跳到程序介绍) 前期入门小项目 前期收获 后期自创关卡 后续 java入门小游戏[test] 游戏界面 github地址: https:/ ...

  10. bootstrap--font-face问题

    在做仿天猫项目时,预期 已经用cdn加载bootstrap,但是不显示文字图标:实际情况: 发现是引用bootstrap的版本导致的.4.0.0版本及以后的css源码中找不到@font-face.可以 ...