首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
BZOJ4152 The Captain(dijkstra+巧妙建图)
】的更多相关文章
BZOJ4152 The Captain(dijkstra+巧妙建图)
BZOJ4152 The Captain 题面很简洁: 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. 很明显这是道最短路 我们知道在求最短路时本身就要不断求min 所以相对于拐弯抹角的横纵差的较小值,我们完全可以无视这个求min 转为建|x1-x2|,|y1-y2|两条边 最后跑一遍最短路即可 (ps.这题是卡SPFA的) IO优化.头文件啥的就自己yy一下吧 #define int long long…
2018.10.30 NOIP模拟 有环无向图(dijkstra+巧妙建图)
传送门 建图巧妙啊. 对于每个点的出边,我们将它们排序之后依次连边. 这样可以把O(m2)O(m^2)O(m2)的边数变成O(m)O(m)O(m)的了. 连的权值就是max(edgemax(edgemax(edge_delta,0)delta,0)delta,0) 然后用边代替点跑dijkstradijkstradijkstra就行了. 代码…
HDU5521 Meeting(dijkstra+巧妙建图)
HDU5521 Meeting 题意: 给你n个点,它们组成了m个团,第i个团内有si个点,且每个团内的点互相之间距离为ti,问如果同时从点1和点n出发,最短耗时多少相遇 很明显题目给出的是个无负环的图,且要跑出单源最短路,那不就是个dij吗 大方向定下,但图该怎么建呢? way1: 给每个团内的所有点两两暴力建边 如图所示:黑的为点,红的为团,相同颜色的边长度相等 共 \(\sum ^{m}_{i=1}\dfrac {1}{2}s_{i}\left( s_{i}-1\right)\) 条边 而…
『The Captain 最短路建图优化』
The Captain(BZOJ 4152) Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. Input Format 第一行包含一个正整数n(2<=n<=200000),表示点数. 接下来n行,每行包含两个整数xi,yi(0<=xi,yi<=10^9),依次表示每个点的坐标. Output Format 一个整数,即最小费用. Sample Input 5 2 2 1…
HDU5772 String problem 最大权闭合图+巧妙建图
题意:自己看吧(不是很好说) 分析: 网络流:最大权闭合子图. 思路如下: 首先将点分为3类 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分) 第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费) 第三类:对于10种字符拆出10个点,每个点的权值为 -(b[x]-a[x]) 那么我们可以得到一个关系图 ,对于第一类中的点Pij,如果想要选择Pij,你就必须要选中第二类中的点i和j,对于第二类中的点…
【算法系列学习】巧妙建图,暴搜去重 Counting Cliques
E - Counting Cliques http://blog.csdn.net/eventqueue/article/details/52973747 http://blog.csdn.net/yuanjunlai141/article/details/52972715 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm&…
POJ-1122 FDNY to the Rescue!---Dijkstra+反向建图
题目链接: https://vjudge.net/problem/POJ-1122 题目大意: 给出矩阵,矩阵中每个元素tij表示从第i个交叉路口到第j个交叉路口所需时间,若tij为-1则表示两交叉路口之间没有直接路径,再给出火警位置所在的交叉路口 和 一个或多个消防站所处的交叉路口位置.输出要求按消防站到火警位置所需时间从小到大排列,输出信息包括消防站位置(初始位置),火警位置(目标位置),所需时间,最短路径上每个交叉路口. 思路: 由于求的是其他点到某一点的最短路,所以反向建图,然后用dij…
[Bzoj4289]PA2012 Tax(Dijkstra+技巧建图)
Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权 N<=100000 M<=200000 Solution 这题关键在于化边为点,把无向边拆成2条有向边 考虑最直白的一种建图方法,对于每一个点u,它的每一条入边向所有出边连边 但这样边数太多了,最坏是\(M^2\)条边,不可行 考虑用差值来建图,每条出边向第一条比它大的出边连一条权值为权差值的…
UVA1327 && POJ1904 King's Quest(tarjan+巧妙建图+强连通分量+缩点)
UVA1327 King's Quest POJ1904 King's Quest 题意: 有n个王子,每个王子都有k个喜欢的妹子,每个王子只能和喜欢的妹子结婚.现有一个匹配表,将每个王子都与一个自己喜欢的妹子配对.请你根据这个表得出每个王子可以和几个自己喜欢的妹子结婚,按序号升序输出妹子的编号,这个表应满足所有的王子最终都有妹子和他结婚(一个妹子只能嫁给一个王子). 看到题目时,一脸懵逼,只觉得题面很有(ci)趣(ji) 但没办法啊,为了王国的一夫一妻制我们只好努力啊awa 解析: 让我们首先…
bzoj4152 The Captain (dijkstra)
做dijkstra,但只需要贪心地把每个点连到它左边.右边.上边.下面的第一个点就可以了 #include<bits/stdc++.h> #define pa pair<int,int> #define lowb(x) ((x)&(-(x))) #define REP(i,n0,n) for(i=n0;i<=n;i++) #define PER(i,n0,n) for(i=n;i>=n0;i--) #define MAX(a,b) ((a>b)?a:b)…