p5471 [NOI2019]弹跳
分析

代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
const int N = 7e4+;
const int M = 2e5;
int n,m,w,h,x[N],y[N],p[M],t[M],L[M],R[M],D[M],U[M];
int head[N],nxt[M],cnt,dis[N],vis[N];
multiset<pair<int,int> >d[M*];
priority_queue<pair<int,int> >q;
inline void update(int le,int ri,int wh,int pl,int id){
d[wh].insert(mp(y[id],id));
if(le==ri)return;
int mid=(le+ri)>>;
if(mid>=pl)update(le,mid,wh<<,pl,id);
else update(mid+,ri,wh<<|,pl,id);
}
inline void go(int le,int ri,int wh,int id,int k){
if(le>=L[id]&&ri<=R[id]){
multiset<pair<int,int> >::iterator it,a;
it=d[wh].lower_bound(mp(D[id],));
while((it!=d[wh].end())&&(it->fi<=U[id])){
int x=it->se;
if(!vis[x]){
vis[x]=,dis[x]=k;
for(int i=head[x];i;i=nxt[i])q.push(mp(-k-t[i],i));
}
a=it,it++,d[wh].erase(a);
}
return;
}
int mid=(le+ri)>>;
if(mid>=L[id])go(le,mid,wh<<,id,k);
if(mid<R[id])go(mid+,ri,wh<<|,id,k);
return;
}
int main(){
int i,j,k;
scanf("%d%d%d%d",&n,&m,&w,&h);
for(i=;i<=n;i++){
scanf("%d%d",&x[i],&y[i]);
update(,w,,x[i],i);
}
for(i=;i<=m;i++){
scanf("%d%d%d%d%d%d",&p[i],&t[i],&L[i],&R[i],&D[i],&U[i]);
nxt[i]=head[p[i]];head[p[i]]=i;
}
vis[]=;
for(i=head[];i;i=nxt[i])q.push(mp(-t[i],i));
while(!q.empty()){
int u=q.top().se,v=-q.top().fi;
q.pop();go(,w,,u,v);
}
for(i=;i<=n;i++)printf("%d\n",dis[i]);
return ;
}
p5471 [NOI2019]弹跳的更多相关文章
- 【题解】Luogu P5471 [NOI2019]弹跳
原题传送门 先考虑部分分做法: subtask1: 暴力\(O(nm)\)枚举,跑最短路 subtask2: 吧一行的点压到vector中并排序,二分查找每一个弹跳装置珂以到达的城市,跑最短路 sub ...
- 洛谷 P5471 - [NOI2019] 弹跳(二维线段树优化建图+堆优化存边)
题面传送门 一道非常有意思的题(大概可以这么形容?) 首先看到这类一个点想一个区域内连边的题目可以很自然地想到线段树优化建图,只不过这道题是二维的,因此需要使用二维线段树优化建图,具体来说,我们外层开 ...
- luogu P5471 [NOI2019]弹跳
luogu 因为是一个点向矩形区域连边,所以可以二维数据结构优化连边,但是会MLE.关于维护矩形的数据结构还有\(KD-Tree\),所以考虑\(KDT\)优化连边,空间复杂度\(m\sqrt n\) ...
- [NOI2019] 弹跳
题意: 给你平面上的$n$个点,共有$m$个弹跳装置. 每个弹跳装置可以从点$p_{i}$以$t_{i}$的代价跳到矩形$(L_{i},D_{i}),(R_{i},U_{i})$中的任何一个点. 现在 ...
- [NOI2019]弹跳(KD-Tree/四分树/线段树套平衡树 优化建图+Dijkstra)
本题可以用的方法很多,除去以下三种我所知道的就还有至少三种. 方法一:类似线段树优化建图,将一个平面等分成四份(若只有一行或一列则等分成两份),然后跑Dijkstra即可.建树是$O(n\log n) ...
- luogu 5471 [NOI2019]弹跳 KDtree + Dijkstra
题目链接 第一眼就是 $KDtree$ 优化建图然而,空间只有 $128mb$,开不下 时间不吃紧,考虑直接跑 $Dijkstra$ $Dijkstra$ 中存储的是起点到每个输入时给出的矩阵的最 ...
- [NOI2019]弹跳(KD-Tree)
被jump送退役了,很生气. 不过切了这题也进不了队,行吧. 退役后写了一下,看到二维平面应该就是KD树,然后可以在KD树上做最短路,然后建立堆和KDTree.然后每次更新则是直接把最短路上的节点删掉 ...
- 题解 [NOI2019]弹跳
题目传送门 题目大意 给出 \(n\) 做城市,每座城市都有横纵坐标 \(x,y\).现在给出 \(m\) 个限制 \(p,t,l,r,d,u\),表示从 \(p\) 城市出发,可以花费 \(t\) ...
- 【NOI2019】弹跳(KDT优化建图)
Description 平面上有 \(n\) 个点,分布在 \(w \times h\) 的网格上.有 \(m\) 个弹跳装置,由一个六元组描述.第 \(i\) 个装置有参数:\((p_i, t_i, ...
随机推荐
- 项目被os x占用
xattr -d com.apple.FinderInfo 空格后拖入项目回车就行了
- python基础循环语句练习
1.使用while循环输入 1 2 3 4 5 6 8 9 10 n = 1 while n < 11: if n == 7: pass else: print(n) n = n + 1 ...
- CentOS6 破解登录密码
1.重启服务器,在倒数读秒的时候按任意键,就会出现如下界面 2.按e进入grub模式,选中kernel,然后按e进入内核编辑模式 3.进入内核编辑模式后,按空格+1回车(或按空格+single回车)退 ...
- 基于Filter实现Gzip数据压缩
在web开发中,当服务器端向客户端返回的数据量比较大时,我们可以通过Gzip对数据进行压缩处理 注意:如果小数据量进行压缩,压缩后的数据可能比原始数据还大:所以response返回数据量比较小时不推荐 ...
- IDEA创建SpringBoot+maven项目
1.创建项目: 2.选择spring Initializr,注意要选择jdk,使用默认的spring.io这样就不用再去写pom文件了 3.输入项目名称: 4.选择Spring Web 5.目录结构:
- BZOJ 1767] [Ceoi2009] harbingers (斜率优化)
[BZOJ 1767] [Ceoi2009] harbingers (斜率优化) 题面 给定一颗树,树中每个结点有一个邮递员,每个邮递员要沿着唯一的路径走向capital(1号结点),每到一个城市他可 ...
- Django重点之url别名
django重点之url别名[参数名必须是name,格式是name="XXX] 不论后台路径如何进行修改路径,前台访问的路径不变,永远是alias, 这样方便开发 前台根据 {{ url & ...
- SCUT - 31 - 清一色 - dfs
https://scut.online/p/31 还是不知道为什么RE了.的确非常玄学. 重构之后就没问题了.果然写的越复杂,分的情况越乱就越容易找不到bug. #include<bits/st ...
- 引入maven以外的jar包
这里有2个案例,需要手动发出Maven命令包括一个 jar 到 Maven 的本地资源库. 要使用的 jar 不存在于 Maven 的中心储存库中. 您创建了一个自定义的 jar ,而另一个 Mave ...
- C# 打印机连接状态判断
原文:https://www.cnblogs.com/Old-Fish/p/6258118.html /// <summary> /// 判断是否连接打印机 /// </summar ...