「JOISC 2014 Day1」巴士走读

将询问离线下来。

从终点出发到起点。

由于在每个点(除了终点)的时间被过来的边固定,因此如果一个点不被新的边更新,是不会发生变化的。

因此可以按照时间顺序,依次提高终点的时间,然后跑dijkstra(记得把访问标记回滚清空掉)。

每条边被跑过了就不再跑了。可以用set,也可以vector(排序,记当前在第几条边)

#include <bits/stdc++.h>
#define rep(q, a, b) for (int q = a, q##_end_ = b; q <= q##_end_; ++q)
#define dep(q, a, b) for (int q = a, q##_end_ = b; q >= q##_end_; --q)
#define mem(a, b) memset(a, b, sizeof a)
#define debug(a) cerr << #a << ' ' << a << "___" << endl
using namespace std;
void in(int &r) {
static char c;
r = 0;
while (c = getchar(), !isdigit(c))
;
do
r = (r << 1) + (r << 3) + (c ^ 48);
while (c = getchar(), isdigit(c));
}
const int mn = 100005;
const int mm = 300005;
struct edge {
int s, t, to;
bool operator<(const edge &A) const { return s == A.s ? (t == A.t ? to < A.to : t < A.t) : s < A.s; }
};
vector<edge> son[mn];
int now_vis[mn], now_lim[mn];
int n, m, Q;
struct node {
int x, v;
bool operator<(const node &A) const { return v < A.v; }
};
priority_queue<node> qw;
bool mark[mn];
int d[mn], sta[mn], tp;
void solve(int v) {
rep(q, 1, tp) mark[sta[q]] = 0;
tp = 0;
while (!qw.empty()) qw.pop();
d[n] = v;
qw.push({ n, v });
edge nw;
while (!qw.empty()) {
int now = qw.top().x;
qw.pop();
if (now == 1)
return;
if (mark[now])
continue;
sta[++tp] = now;
mark[now] = 1;
while (now_vis[now] < now_lim[now]) {
nw = son[now][now_vis[now]];
if (nw.s <= d[now]) {
if (nw.t > d[nw.to]) {
d[nw.to] = nw.t;
qw.push({ nw.to, nw.t });
}
++now_vis[now];
} else
break;
}
}
}
struct nd {
int v, id;
bool operator<(const nd &A) const { return v < A.v; }
} qr[mn];
int ans[mn];
int main() {
int a, b, x, y;
in(n), in(m);
rep(q, 1, m) in(a), in(b), in(x), in(y), son[b].push_back({ y, x, a });
rep(q, 1, n) sort(son[q].begin(), son[q].end());
rep(q, 1, n) now_lim[q] = son[q].size();
in(Q);
rep(q, 1, Q) in(qr[q].v), qr[q].id = q;
sort(qr + 1, qr + Q + 1);
rep(q, 1, n) d[q] = -1;
rep(q, 1, Q) {
solve(qr[q].v);
ans[qr[q].id] = d[1];
}
rep(q, 1, Q) printf("%d\n", ans[q]);
return 0;
}

「JOISC 2014 Day1」巴士走读的更多相关文章

  1. 「JOISC 2014 Day1」 历史研究

    「JOISC 2014 Day1」 历史研究 Solution 子任务2 暴力,用\(cnt\)记录每种权值出现次数. 子任务3 这不是一个尺取吗... 然后用multiset维护当前的区间,动态加, ...

  2. 「JOISC 2014 Day1」历史研究 --- 回滚莫队

    题目又臭又长,但其实题意很简单. 给出一个长度为\(N\)的序列与\(Q\)个询问,每个询问都对应原序列中的一个区间.对于每个查询的区间,设数\(X_{i}\)在此区间出现的次数为\(Sum_{X_{ ...

  3. 「题解」「JOISC 2014 Day1」历史研究

    目录 题目 考场思考 思路分析及标程 题目 点这里 考场思考 大概是标准的莫队吧,离散之后来一个线段树加莫队就可以了. 时间复杂度 \(\mathcal O(n\sqrt n\log n)\) . 然 ...

  4. 【LOJ】#3032. 「JOISC 2019 Day1」馕

    LOJ#3032. 「JOISC 2019 Day1」馕 处理出每个人把馕切成N段,每一段快乐度相同,我们选择第一个排在最前的人分给他的第一段,然后再在未选取的的人中选一个第二个排在最前的切一下,并把 ...

  5. 【LOJ】#3031. 「JOISC 2019 Day1」聚会

    LOJ#3031. 「JOISC 2019 Day1」聚会 听说随机可过? 我想了很久想了一个不会被卡的做法,建出前\(u - 1\)个点的虚树,然后找第\(u\)个点的插入位置,就是每次找一条最长链 ...

  6. 【LOJ】#3030. 「JOISC 2019 Day1」考试

    LOJ#3030. 「JOISC 2019 Day1」考试 看起来求一个奇怪图形(两条和坐标轴平行的线被切掉了一个角)内包括的点个数 too naive! 首先熟练的转化求不被这个图形包含的个数 -- ...

  7. loj2880「JOISC 2014 Day3」稻草人

    题目链接:bzoj4237 ​ loj2880 考虑\(cdq\)分治,按\(x\)坐标排序,于是问题变成统计左下角在\([l,mid]\),右上角在\([mid+1,r]\)的矩形数量 我们先考虑固 ...

  8. [LOJ#2878]. 「JOISC 2014 Day2」邮戳拉力赛[括号序列dp]

    题意 题目链接 分析 如果走到了下行车站就一定会在前面的某个车站走回上行车站,可以看成是一对括号. 我们要求的就是 类似 代价最小的括号序列匹配问题,定义 f(i,j) 表示到 i 有 j 个左括号没 ...

  9. LOJ#2882. 「JOISC 2014 Day4」两个人的星座(计算几何)

    题面 传送门 题解 我们发现如果两个三角形相离,那么这两个三角形一定存在两条公切线 那么我们可以\(O(n^2)\)枚举其中一条公切线,然后可以暴力\(O(n^3)\)计算 怎么优化呢?我们可以枚举一 ...

随机推荐

  1. MySQL中写操作

    具体到操作流程: 当执行某个写操作的 SQL 时,引擎将这行数据更新到内存的同时把对应的操作记录到 redo log 里面,然后处于 prepare 状态.并把完成信息告知给执行器. 执行器生成对应操 ...

  2. 解决ubuntu突然无法联网问题

    一.问题描述 今天使用笔记本远程办公的时候,突然电脑无法联网了,使用chrome浏览器访问网页出现如下错误 This site can't be reachedwww.baidu.com's serv ...

  3. Improving Variational Auto-Encoders using Householder Flow

    目录 概 主要内容 代码 Tomczak J. and Welling M. Improving Variational Auto-Encoders using Householder Flow. N ...

  4. Java——HashMap集合详解

    第一章 HashMap集合简介 1.1 介绍 HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对.HashMap 的实现不是同步的,这意味着它不是线程安 ...

  5. 【odoo】关于odoo二开模块规范的一点思考

    老韩头的开发日常 ☞ [好书学习]系列 背景 作为丙方,完成了甲方的二开需求.因此,在设计二开模块的时候,考虑的是当时所列的需求清单,并整合到一个二开模块中.完成交付后,客户评价蛮好的.因此,成功的为 ...

  6. Hadoop(HDFS,YARN)的HA集群安装

    搭建Hadoop的HDFS HA及YARN HA集群,基于2.7.1版本安装. 安装规划 角色规划 IP/机器名 安装软件 运行进程 namenode1 zdh-240 hadoop NameNode ...

  7. HDOJ3579Hello Kiki

    https://acm.hdu.edu.cn/showproblem.php?pid=3579 一些坑点.首先是如果说最后求得到的结果为0,那么在数学意义上这是正确的,0对于任何的确是最小的整数解,但 ...

  8. RocketMQ 介绍与安装

    目录 RocketMQ 介绍 MQ 介绍 MQ 作用 MQ 缺点 MQ 常见产品 RocketMQ 简介 RocketMQ 架构 RocketMQ 安装 RocketMQ 介绍 MQ 介绍 定义: M ...

  9. Typora图床

    Typora图床 Typora+PicGo+Gitee(码云)实现高效Markdown图床 typora是我最早接触的markdown格式的轻文本编辑器,因为我是计算机专业,所以平常记笔记会有代码块, ...

  10. JS隐形,显性,名义和鸭子类型

    隐形转换 JavaScript中只有在一些极少数的情况下才会因为一个类型错误抛出错误.例如:调用非函数对象或者获取null / underfined的属性时,这就是隐形转换. 首先JS在遇到运算符的时 ...