过了这题我就想说一声艹,跟这个题死磕了将近6个小时,终于是把这个题死磕出来了.首先看到这个题的第一反应,和当初做过的一个房间最短路比较相似,然后考虑像那个题那样建边,然后跑最短路.(具体建边方法请参考那个题,这个题比那道的建边还要简单一点).然后考虑的可能的点的数目比较多(有最多4000)个,于是就使用各种方法缩减建边的时间(优化后大概要O(N^2\*log(n)))左右.其实也是数据没仔细卡,要不然确实光建边就会T.但是那样的点有特判方法可以做出来...所以我就赌它没有.事实证明确实没有. 建…
Description 新一届智能车大赛在JL大学开始啦!比赛赛道可以看作是由n个矩形区域拼接而成(如下图所示),每个矩形的边都平行于坐标轴,第i个矩形区域的左下角和右上角坐标分别为(xi,1,yi,1)和(xi,2,yi,2). 题目保证:xi,1<xi,2=xi+1,1,且yi,1< yi,2,相邻两个矩形一定有重叠在一起的边(如图中虚线所示),智能车可以通过这部分穿梭于矩形区域之间. 选手们需要在最快的时间内让自己设计的智能车从一个给定的起点S点到达一个给定的终点T点,且智能车不能跑出赛…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2433 http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id=1668 [题目大意] 题目已经讲得很清楚了 防剧透 防剧透 防剧透 防剧透 防剧透 防剧透 防剧透 防剧透 防剧透 [解题思路] 首先可以发现一个性质:路径的转折点只能在矩形的顶点上.这个可以用任意三角形内一点到两顶点的距离<另一点到这两顶点的距离来证…
假设S在T左边,那么只能往右或者上下走 f[i]表示S到i点的最短路 f[i]=min(f[j]+dis(i,j)(i能看到j)) 判断i能看到j就维护一个上凸壳和一个下凸壳 时间复杂度$O(n^2)$ 代码写的有点长… #include<cstdio> #include<cmath> #include<algorithm> #define N 2010 using namespace std; struct P{int x,y;P(){}P(int _x,int _y…
/* 可以发现, 最优路径上的所有拐点, 基本上都满足一定的性质, 也就是说是在矩形上的拐角处 所以我们可以把他们提出来, 单独判断即可 由于我们提出来的不超过2n + 2个点, 我们将其按照x坐标排序, 这样就只能单方向走 n^2枚举判断两个点之间能不能直接走, 然后连边DAGdp即可 */ #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #include<…
Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 17538   Accepted: 5721 Description In the age of television, not many people attend theater performances. Antique Comedians of Malidinesia are aware of this fact. They want to propagate th…
#include <cstdio> #include <algorithm> #include <cstring> #include <queue> #define inf 0x3f3f3f3f #define N 35 #define maxn 5000 #define mod 1000000007 #define ll long long using namespace std; int n,m,q,cte; ]; ,,,}; ,,,-}; struct…
CodeForces 786B Rick和他的同事们做出了一种新的带放射性的婴儿食品(???根据图片和原文的确如此...),与此同时很多坏人正追赶着他们.因此Rick想在坏人们捉到他之前把他的遗产留给Morty. 在宇宙中一共有n个星球标号为1到n.Rick现在身处于标号为s的星球(地球)但是他不知道Morty在哪里.众所周知,Rick有一个传送枪,他用这把枪可以制造出一个从他所在的星球通往其他星球(也包括自己所在的星球)的单行道路.但是由于他还在用免费版,因此这把枪的使用是有限制的. 默认情况…
题解 显然是个\(n^2\)的dp 我们要找每个点不穿过非赛道区域能到达哪些区域的交点 可以通过控制两条向量负责最靠下的上边界,和最靠上的下边界,检查当前点在不在这两条向量之间即可,对于每个点可以\(O(n)\)求出来哪些点是可以到达的 之后dp即可 注意判断S点所在区域的时候需要找靠后的那个区域-- 代码 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring>…
/* bfs搜索!要注意的是点与点的权值是不一样的哦! 空地到空地的步数是1, 空地到墙的步数是2(轰一炮+移过去) 所以用到优先队列进行对当前节点步数的更新! */ #include<iostream> #include<queue> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; int n, m; ][]; struct node{ in…