「JOISC 2014 Day1」巴士走读
「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」巴士走读的更多相关文章
- 「JOISC 2014 Day1」 历史研究
「JOISC 2014 Day1」 历史研究 Solution 子任务2 暴力,用\(cnt\)记录每种权值出现次数. 子任务3 这不是一个尺取吗... 然后用multiset维护当前的区间,动态加, ...
- 「JOISC 2014 Day1」历史研究 --- 回滚莫队
题目又臭又长,但其实题意很简单. 给出一个长度为\(N\)的序列与\(Q\)个询问,每个询问都对应原序列中的一个区间.对于每个查询的区间,设数\(X_{i}\)在此区间出现的次数为\(Sum_{X_{ ...
- 「题解」「JOISC 2014 Day1」历史研究
目录 题目 考场思考 思路分析及标程 题目 点这里 考场思考 大概是标准的莫队吧,离散之后来一个线段树加莫队就可以了. 时间复杂度 \(\mathcal O(n\sqrt n\log n)\) . 然 ...
- 【LOJ】#3032. 「JOISC 2019 Day1」馕
LOJ#3032. 「JOISC 2019 Day1」馕 处理出每个人把馕切成N段,每一段快乐度相同,我们选择第一个排在最前的人分给他的第一段,然后再在未选取的的人中选一个第二个排在最前的切一下,并把 ...
- 【LOJ】#3031. 「JOISC 2019 Day1」聚会
LOJ#3031. 「JOISC 2019 Day1」聚会 听说随机可过? 我想了很久想了一个不会被卡的做法,建出前\(u - 1\)个点的虚树,然后找第\(u\)个点的插入位置,就是每次找一条最长链 ...
- 【LOJ】#3030. 「JOISC 2019 Day1」考试
LOJ#3030. 「JOISC 2019 Day1」考试 看起来求一个奇怪图形(两条和坐标轴平行的线被切掉了一个角)内包括的点个数 too naive! 首先熟练的转化求不被这个图形包含的个数 -- ...
- loj2880「JOISC 2014 Day3」稻草人
题目链接:bzoj4237 loj2880 考虑\(cdq\)分治,按\(x\)坐标排序,于是问题变成统计左下角在\([l,mid]\),右上角在\([mid+1,r]\)的矩形数量 我们先考虑固 ...
- [LOJ#2878]. 「JOISC 2014 Day2」邮戳拉力赛[括号序列dp]
题意 题目链接 分析 如果走到了下行车站就一定会在前面的某个车站走回上行车站,可以看成是一对括号. 我们要求的就是 类似 代价最小的括号序列匹配问题,定义 f(i,j) 表示到 i 有 j 个左括号没 ...
- LOJ#2882. 「JOISC 2014 Day4」两个人的星座(计算几何)
题面 传送门 题解 我们发现如果两个三角形相离,那么这两个三角形一定存在两条公切线 那么我们可以\(O(n^2)\)枚举其中一条公切线,然后可以暴力\(O(n^3)\)计算 怎么优化呢?我们可以枚举一 ...
随机推荐
- Gumbel distribution
目录 概 主要内容 定义 Gumbel-Max trick Gumbel trick 用于归一化 代码 概 感觉这个分布的含义很有用啊, 能预测'最大', 也就是自然灾害, 太牛了. 主要内容 定义 ...
- FreeBSD 物理机下显卡的配置
FreeBSD 已从 Linux 移植了显卡驱动,理论上,A 卡 N 卡均可在 amd64 架构上正常运行. 支持情况 对于 FreeBSD 11,支持情况同 Linux 内核 4.11: 对于 Fr ...
- N-Empress
全排列 基本思想:递归.散列 代码实现 #include<cstdio> const int maxn = 11; int n, P[maxn], hashTable[11] = {fal ...
- Java面向对象笔记 • 【第2章 面向对象进阶】
全部章节 >>>> 本章目录 2.1 成员变量 2.1.1 成员变量与局部变量的区别 2.1.2 成员变量的使用 2.1.3 实践练习 2.2 this关键字 2.2.1 ...
- 【MySQL作业】SELECT 数据查询——美和易思select 选择列表应用习题
点击打开所使用到的数据库>>> 1.查询所有客户的地址和电话号码. SELECT address, phone FROM customer 2.查询所有商品的名称.种类和单价信息. ...
- MySQL数据操作与查询笔记 • 【第3章 DDL 和 DML】
全部章节 >>>> 本章目录 3.1 使用 DDL 定义数据库表结构 3.1.1 SQL 简介 3.1.2 维护数据库和创建数据表 3.2 使用 DDL 维护数据库表结构 ...
- 查收新年礼物丨DevEco Studio 3.0 Beta2发布,20个新变化详解
HUAWEI DevEco Studio是开发HarmonyOS应用和原子化服务的一站式集成开发环境(IDE),为开发者提供工程模板创建.开发.编译.调试.发布等功能. 2021年12月31日,新版本 ...
- Ubuntu18.04安装/卸载NVIDIA显卡驱动
1 显卡驱动下载 官网:NVIDIA 搜索适合本机的驱动 获取最新版本驱动 立即下载 文件 以上,显卡驱动下载完成. 2 显卡驱动安装 2.1 添加可执行权限 进入驱动文件目录sudo chmod a ...
- vsconde launch.json配置 调试本地文件
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing ...
- Pytest_Hook钩子函数总结(14)
前言 pytest 的钩子函数有很多,通过钩子函数的学习可以了解到pytest在执行用例的每个阶段做什么事情,也方便后续对pytest二次开发学习.详细文档可以查看pytest官方文档https:// ...