最短路
WerKeyTom_FTD
我是一只来自中山纪念中学高三的oier,请多多指教
展开
-
照片
题目大意现有N个点,每个点权值为0或1,现给出m个限制每个形如l~r这些点权值和为1.请最大化n个点的权值和。如果不可能有答案输出-1。 n<=200000。m<=100000。差分约束系统设sum[i]表示权值前缀和我们可以发现需要满足约束如下: sum[i]−sum[i−1]>=0即sum[i−1]<=sum[i]sum[i]-sum[i-1]>=0即sum[i-1]<=sum[i] su原创 2015-12-28 19:19:31 · 620 阅读 · 0 评论 -
[JZOJ5133][SDOI省队集训2017]重建
题目描述傻逼题预处理每个图里经过k条边的最短路。 然后可以用单调栈求出一些关键的c值使得某副图改变最短路经过的边数。 接着顺序扫这些关键点,解方程即可。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--原创 2017-06-03 22:34:53 · 659 阅读 · 0 评论 -
最小边权和
题目描述有一张n个点m条边的有向图,每条边有一个互不相同的边权w,有q个询问,要求你从点a经过不超过c条边到点b,要求经过的边权递增并和尽量小,求出最小的边权和,如果没有合法方案则输出-1。水题按边权从小到大加入做floyd即可。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespa原创 2017-05-04 15:39:21 · 1954 阅读 · 0 评论 -
[bzoj3073]Journeys
题目描述Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路。N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建造道路:(a,b),(c,d)表示,对于任意两个国家x,y,如果a<=x<=b,c<=y<=d,那么在xy之间建造一条道路。Seter保证一条道路不会修建两次,也保证不会有一个国家与自己之间有道路。 Seter好不容原创 2017-03-15 21:09:59 · 640 阅读 · 0 评论 -
[bzoj4773]负环
题目大意找到有向边权图的一个最小负环,输出点的个数。瞎做设f[i,j,k]表示i到j经过k个点的最短路。#include<cstdio>#include<algorithm>#define min(a,b) (a<b?a:b)#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=300+10,maxm=9原创 2017-03-17 21:25:26 · 844 阅读 · 0 评论 -
过河
题目大意一条宽为W的河。由y=0和y=W两条边界组成。 一些二维点,还有一些圆。每个圆都有半径和使用一次的代价。 你可以在每个二维点上放置一个圆或不放置,代价为该圆使用代价。 现在从y=0走到y=W,两个圆相交或相切则互相联通,与y=0相交或相切的圆可以通过,y=W同理。 求最小代价。最短路设(i,j)表示在第i个圆上放第j种圆,用一个点表示它。 对于(i,j)和(k,l),如果r[j]+原创 2016-11-14 21:43:27 · 461 阅读 · 0 评论 -
图的半径
题目大意给定无向图,求图的半径。 图的半径定义:找到图上一点(可以在边上),使得其余所有点到该点最短路最大的那个最小,这个最小的最大最短路就是图的半径。该点称为中心。观察先做floyd跑双源最短路 我们枚举一条边j连向k,长度为t,认为中心在这条边上。 那么答案min(maxni=1(min(dis[j][i]+x,dis[k][i]+t−x))))min(max_{i=1}^n(min(di原创 2016-11-10 16:49:54 · 2768 阅读 · 0 评论 -
Digits'path
题目描述最短路我们可以枚举二进制状态S表示每个数是否可以出现。 由于末位已经确定是an,所以可以得到最后是否一定是2或5的倍数,因此二进制状态无需枚举2和5。 假如知道一定是2的倍数,那么根据其是否是3的倍数可知其是否是6的倍数,因此二进制状态无需枚举6。 是4的倍数只要末两位是4的倍数即可,而最后一位确定,因此我们只需要保留倒数第二位模2的结果。 这样,需要2^3枚举二进制状态,然后f[i原创 2016-07-02 10:28:29 · 447 阅读 · 0 评论 -
Center
题目描述简单思路做一次floyd。 接着枚举一条边,其两个端点为u和v,长度为c。 设终点在这条边上,距离u的距离为x。 那么点i到终点的最短路为min(dis[i][u]+x,dis[i][v]+c-x) 我们把从u节点走到终点的这些节点集合称为A集合,其余称为B集合。 那么一个终点的贡献就是min(A集合中点到u的最短路最大值+x,B集合中点到v的最短路最大值+c-x) 我们可以计算原创 2016-06-29 21:26:28 · 566 阅读 · 0 评论 -
IOIOI卡片占卜
题目描述K理事长很喜欢占卜,经常用各种各样的方式进行占卜。今天,他准备使用正面写着”I”,反面写着”O”的卡片为今年IOI的日本代表队占卜最终的成绩。 占卜的方法如下所示: 首先,选择5个正整数A,B,C,D,E。 将A+B+C+D+E张IOI卡片排成一行,最左侧的A张卡片正面朝上,接下来B张反面朝上,接下来C张卡片正面朝上,接下来D张反面朝上,最后E张正面朝上。如此排列的话,从左侧开始顺次为原创 2016-04-18 14:09:35 · 1222 阅读 · 2 评论 -
[JSOI2016]飞机调度
题目描述作为一个旅行达人以及航空公司的金卡会员,你每一年的飞行里程可以绕赤道几周了。你发现,航空公司为了提高飞机的使用率,并不是简单的一条航线使用一架飞机来回飞,而是会让同一架飞机连续不停地飞不同的航线,甚至有的时候为了能够完成飞机的调度,航空公司还会增开一些临时航线——在飞机转场的同时顺路捎一些乘客。你研究了一下GDOI著名航空公司GD Airways的常规直飞航线,你想知道,在最佳调度方案下,G原创 2016-04-25 18:40:19 · 1215 阅读 · 0 评论 -
最小代价
题目大意给出一副无向图,图中有黑点和白点,要求选择图中一些边建成新图,满足不会存在任何一个白点到最近的黑点距离超过原图中该白点到最近黑点的距离。水题建立虚拟结点连向所有黑点权值为0. 然后做一遍最短路,在最短路径中的边保留,然后做最小生成树。#include<cstdio>#include<algorithm>#include<set>#define fo(i,a,b) for(i=a;i<原创 2016-03-09 19:17:17 · 472 阅读 · 0 评论 -
[SRM553-1000]YamanoteLine
题目大意有一个n个点的环,相邻两个点距离是正整数。 现在有若干个约束,是以下两种其中之一: 1、S与T的顺时针距离不小于L。 2、S与T的顺时针距离不大于L。 问环总长的解的方案数。差分约束不妨设D[i]表示0与i的顺时针距离,特殊的,D[n]表示整个环的总长,设为X。 显然,D[i+1]−D[i]>=1D[i+1]-D[i]>=1,等同于D[i]−D[i+1]≤−1D[i]-D[i+1]原创 2018-02-27 16:32:17 · 612 阅读 · 0 评论