「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. Codeforces 931C:Laboratory Work(构造)

    C. Laboratory Work time limit per test : 1 second memory limit per test : 256 megabytes input : stan ...

  2. 适用于 Flutter 的 Google 移动广告 SDK 正式版现已发布

    作者 / Zoey Fan,Flutter 产品经理 应用变现有多种方法: 通过实体企业的店面接受付款.提供订阅或应用内购买,或者直接在应用中投放广告.经过六个月的 beta 测试期,我们很高兴能够推 ...

  3. IM2603设计资料 Type-C拓展坞电源管理芯片

    应用于Type-C拓展坞外围集成Buck变换器的电源管理芯片 IM2603 IM2603 概述 用于带有集成降压转换器的 Type-C 外围应用的电源管理 IC IM2603 是一款主要用于 Type ...

  4. Java基础周测试(一)详解

    一.单选题 (题数:30,共 150.0 分) 1.下列选项不可作为Java语言变量名的是(    ).(5.0分) A.a1            B.$1           C._1       ...

  5. 使用 JavaScript 用循环嵌套输出乘法表。外循环控制行数,内循环控制当前行要输出的乘法表达式,在页面上输出九九乘法表

    查看本章节 查看作业目录 需求说明: 在页面上输出九九乘法表,实现效果如图所示 实现思路: 创建HTML页面 在页面中嵌入 <script type="text/javascript& ...

  6. centos6.5-rsync+inotify

    一.目的 通过监控192.168.3.10的目录,实现实时同步. 实验环境 centos1       192.168.3.10 centos2       192.168.3.11 二.配置 cen ...

  7. STM32新建模板之库文件

    一.新建项目文件夹 在桌面创建项目文件夹,用于存放工程,命名为"stm32f10x_project" 在项目文件夹中创建3个文件夹,分别命名为:CMSIS.OUTPUT.STM32 ...

  8. CF995E Number Clicker

    题目分析 首先,我们必须明白,操作都是互逆的,\(1,2\)之间是可以互相转化的,这是不需证明的,对于操作\(3\),实际上,是求当前数的逆元,我们知道,逆元就是求当前数在模另一个数下的倒数,那么,逆 ...

  9. 前端如何低门槛开发iOS、Android、小程序多端应用

    现如今跨平台开发技术已不是什么新鲜话题了,在市面上也有一些开源的框架可供选择,然而技术成熟.产品服务健全的平台并不多,其中也不乏推陈出新的框架值得关注. 比如最近使用的AVM,由APICloud迭代推 ...

  10. linux 下安装minconda3

    一.关于bashrc目录,此文件是隐藏的,如果要打开此文件需要用: vim /root/.bashrc 二.linux下关于防火墙的命令 1.查看防火墙状态 firewall-cmd --state ...