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

那么我们显然要求合法的点中从 $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. Android Studio 学习笔记(三):简单控件及实例

    控件.组件.插件概念区分 说到控件,就不得不区分一些概念. 控件(Control):编程中用到的部件 组件(Component):软件的组成部分 插件(plugin): 应用程序中已经预留接口的组件 ...

  2. 曹工说Spring Boot源码(18)-- Spring AOP源码分析三部曲,终于快讲完了 (aop:config完整解析【下】)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  3. DeBug Python神级工具PySnooper

    安装 pip3 install pysnooper import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: ...

  4. HDU 4994 博弈。

    F - 6 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  5. es5实现一个class

    es5实现一个class https://juejin.im/post/5ac1c5bf518825558949f898#heading-9

  6. Ubuntu18.04-Java8安装

    添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 安装oracle-java-installer sudo ...

  7. F12后面的世界(Elements篇)——重识html

    从 淘宝网, 检查元素开始探索之旅. html是什么? hyper text markup language 超文本标记语言,使用标签来描述网页 标签 语义化标签 html5新增标签 什么是超文本? ...

  8. js 预编译

    js 运行代码的时候分为几个步骤:语法分析 ==>预编译  ==>解释执行 语法解析:通篇扫描代码,查看语法是否出错 解释执行:读一行 - 解释一行 - 执行一行 预编译执行的操作: // ...

  9. clr via c# delegate

    1,委托列子 internal delegate void Feedback(int value); class DelegateRef { public static void StaticDele ...

  10. nginx基础(二)

    二.nginx基础配置 (1)错误指向一个页面 http状态指向指定访问页面,在 /etc/nginx/conf.d/default.conf 中配置 error_page /50x.html; er ...