【题解】Luogu P5471 [NOI2019]弹跳】的更多相关文章

原题传送门 先考虑部分分做法: subtask1: 暴力\(O(nm)\)枚举,跑最短路 subtask2: 吧一行的点压到vector中并排序,二分查找每一个弹跳装置珂以到达的城市,跑最短路 subtask3: 看见是一个链,自然而然的可以想到线段树优化建图,跑最短路 100pts 上面是72pts的暴力做法,其中subtask3的做法给了我们了一些提示,这题要用数据结构优化建图: 在横轴上开一颗线段树,线段树每个节点上是一个存pair的set,存的是\([l,r]\)区间内有第\(id\)个…
luogu 因为是一个点向矩形区域连边,所以可以二维数据结构优化连边,但是会MLE.关于维护矩形的数据结构还有\(KD-Tree\),所以考虑\(KDT\)优化连边,空间复杂度\(m\sqrt n\),无法通过 进一步的,一条题目中的边会对若干\(KDT\)上的点连边,然后这些点的子树被此点更新.考虑\(dijkstra\)的过程,每次拿出\(dis\)最小的点,并更新其他点,并且可以发现如果其他点被当前最小的\(dis_x+w_i\)更新到就不能再被更新了,那么我们可以每次取出最小的\(dis…
题面传送门 一道非常有意思的题(大概可以这么形容?) 首先看到这类一个点想一个区域内连边的题目可以很自然地想到线段树优化建图,只不过这道题是二维的,因此需要使用二维线段树优化建图,具体来说,我们外层开一棵大线段树维护 \(x\) 轴下标区间,大线段树上每个节点又套了个小的动态开点线段树,每次我们从一个点向一个矩形连边时就在动态开点线段树上找到对应的区间并从这个点向这些区间中连边,不难发现这个做法点数是 \(\mathcal O(n\log^2n)\) 级别的,边数是 \(\mathcal O(m…
题目链接 第一眼就是 $KDtree$ 优化建图然而,空间只有 $128mb$,开不下   时间不吃紧,考虑直接跑 $Dijkstra$ $Dijkstra$ 中存储的是起点到每个输入时给出的矩阵的最短距离 当取出堆顶时就将这个矩阵中所有点 "裂开",并更新每一个小点的答案 如果该点在之前已经被一个最短路更短的矩阵更新过了,就不扩展它 否则,扩展每一个分裂出的点,将新的矩阵加入优先队列中即可 一个重要的优化就是每次 "分裂" 一个矩阵时要在 $KDtree$ 中将对…
分析 代码 #include<bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define mp make_pair ; 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&…
[题解] Luogu P5446 [THUPC2018]绿绿和串串 ·题目大意 定义一个翻转操作\(f(S_n)\),表示对于一个字符串\(S_n\), 有\(f(S)= \{S_1,S_2,...,S_{n-1},S_n,S_{n-1},...S_2,S_1 \}\). 现在给定一个长度为\(n\)的字符串\(S^{'}\)表示原字符串\(S\)经过若干次(可能为0)旋转之后的一个前缀, 求原来字符串可能的长度\(l\). 显然当\(l > n\)时一定可行,所以只需要输出所有的\(l\leq…
原题传送门 同步赛上我一开始想了个看似正确却漏洞百出的贪心:按\(a_i+b_i\)的和从大向小贪心 随便想想发现是假的,然后就写了个28pts的暴力dp 杜神后半程说这题就是个贪心,但我没时间写了 (实际是没想明白) 我们来说这道题的正解: 我们先珂以满足和最大,再满足并集大小大于等于\(l\).所以我们先将\(a\)序列和\(b\)序列排序,取出两个序列的前\(k\)大 如果并集大小大于等于\(l\)就直接统计答案 否则我们要凑满\(l\)个都包含的,在凑的过程中动态更新答案 我们在两个序列…
原题传送门 前置芝士:斜率优化 不会的可以去杜神博客学 这道题我考场上只会拆点跑最短路的70pts做法 后来回家后发现错误的爆搜都能拿满分(刀片) 还有很多人\(O(mt)\)过的,还是要坚持写正解好不好 我们先考虑\(O(mt)\)的暴力dp,先不考虑总时间对烦躁值的影响,设\(dp[id]\)表示走完第\(id\)条边最小的代价: \[dp[id]=Min(dp[j]+A(p_{id}-q_j)^2+B(p_{id}-q_j)+C)(id,j \in [1,m],q_j<=p_{id},v[…
题目传送门 题目大意 给出 \(n\) 做城市,每座城市都有横纵坐标 \(x,y\).现在给出 \(m\) 个限制 \(p,t,l,r,d,u\),表示从 \(p\) 城市出发,可以花费 \(t\) 走到 \(l\le x\le r,d\le y\le u\) 的一座城市. 问,从城市 1 出发走到每座城市的最小花费是多少? \(n\le 7\times 10^4,m\le 1.5\times 10^5\) 思路 这道题自己只做出来 \(76\) 分,剩下的感觉还是比较妙吧? 首先不难看出,我们…
题意: 给你平面上的$n$个点,共有$m$个弹跳装置. 每个弹跳装置可以从点$p_{i}$以$t_{i}$的代价跳到矩形$(L_{i},D_{i}),(R_{i},U_{i})$中的任何一个点. 现在请你对于每座城市求出从1号点跳到它的最小代价. $n\leq 70000,m\leq 150000$. 题解:不把边建出来的$KD-tree$优化建图. 看一眼就知道$KD-tree$优化建图,但如果把所有边都建出来就爆炸了. 设原图上的点是实点,$KD-tree$上的点(代表一个实点和一个矩形)是…