
训练指南-第五章
文章平均质量分 79
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 1045 - The Great Wall Game(二分图匹配)
题目链接:uva 1045 - The Great Wall Game枚举最终移动到的行和列,以及两条对角线,建立二分图,X集合为棋子,Y集合为目标位置,边权为棋子移动到目标位置的代价,做完美匹配,求最小值。#include #include #include #include #include using namespace std;const int ma原创 2015-09-23 21:50:32 · 1337 阅读 · 0 评论 -
uva 1514 - Piece it together(2SAT)
题目链接:uva 1514 - Piece it together建图做2SAT判定,详细请看代码注释。#include #include #include #include using namespace std;typedef pair pii;const int maxn = 1e6 + 5;const int maxm = 1005;const i原创 2015-09-12 22:19:23 · 771 阅读 · 0 评论 -
uva 610 - Street Directions(双联通)
题目链接:uva 610 - Street Directions求出所有边双联通分量,然后每一块单独考虑即可。#include #include #include #include using namespace std;typedef pair pii;const int maxn = 1005;const int maxm = 1e6;int N,原创 2015-09-12 22:17:58 · 640 阅读 · 0 评论 -
uva 1466 - String Phone(2SAT)
题目链接:uva 1466 - String Phone对于每个位置而言,只有对定角的两个位置可能共存,所有枚举每个位置后可以用dfs预处理出每个地方是哪两个角有可能,然后做2SAT。#include #include #include #include #include using namespace std;const int maxn = 3005;c原创 2015-09-12 22:20:27 · 782 阅读 · 0 评论 -
uva 544 - Heavy Cargo(生成树)
题目链接:uva 544 - Heavy Cargo#include #include #include #include #include #include using namespace std;const int maxn = 205;const int maxm = 20005;struct Edge { int u, v, d; bool opera原创 2015-09-12 22:19:09 · 1029 阅读 · 0 评论 -
uva 1391 - Astronauts(2sat)
题目链接:uva 1391 - Astronauts#include #include #include #include #include using namespace std;const int maxn = 100005;struct TwoSAT { int n; bool mark[maxn * 2]; vector G[maxn * 2]; in原创 2015-09-07 23:19:06 · 868 阅读 · 0 评论 -
uva 1357 - Cells(dfs)
题目链接:uva 1357 - Cells用栈模拟递归,根据每个节点被访问的顺序判断。#include #include #include #include #include #include using namespace std;const int maxn = 3 * 1e5 + 5;const int maxm = 2 * 1e7 + 5;in原创 2015-09-07 23:15:15 · 872 阅读 · 0 评论 -
uva 11396 - Claw Decomposition(二分图判定)
题目链接:uva 11396 - Claw Decomposition#include #include #include #include using namespace std;const int maxn = 305;int N, C[maxn];vector G[maxn];bool bipartite(int u) { for (int i = 0;原创 2015-09-07 22:56:23 · 565 阅读 · 0 评论 -
uva 11294 - Wedding(2 sat)
题目链接:uva 11294 - Weddingh为true,w为false,每对超过架的人就是一对关系。做2sat#include #include #include #include using namespace std;const int maxn = 205;struct TwoSAT { int n; bool mark[maxn * 2];原创 2015-09-07 22:46:53 · 1120 阅读 · 1 评论 -
uva 1376 - Animal Run(最短路)
题目链接:uva 1376 - Animal Run以每个三角形为一个节点,建图,起点连向左下边界,终点连向右上边界。#include #include #include #include #include using namespace std;const int maxn = 2005;const int maxm = 2 * 1e6 + 5;cons原创 2015-09-07 23:17:31 · 900 阅读 · 0 评论 -
uva 12275 - Sensor network(生成树)
题目链接:uva 12275 - Sensor network先建立最小生成树,然后枚举边,加入树中,如果形成环,就将环生权值最小的边删除。#include #include #include #include #include using namespace std;typedef pair pii;const int maxn = 400;const原创 2015-09-11 21:33:59 · 744 阅读 · 0 评论 -
uva 11604 - General Sultan(KMP+dfs)
题目链接:uva 11604 - General Sultan对两两字符串做处理,以i,j为节点,表示第i个字符串的第j个字符。#include #include #include #include #include using namespace std;const int maxn = 105;const int maxm = 25;int N, j原创 2015-09-11 21:20:27 · 925 阅读 · 0 评论 -
uva 11098 - Battle II(强联通)
题目链接:uva 11098 - Battle II先将图缩点,每个强连通分量中最小的点权做为新点的点权。所有入度为0的点是一定要的,然后从点权小的开始考虑,如果加入后平均值变小,则加入。最后按照dfs序排序后输出。#include #include #include #include #include #include using namespace std原创 2015-09-11 20:56:45 · 484 阅读 · 0 评论 -
uva 10972 - RevolC FaeLoN(双联通)
题目链接:uva 10972 - RevolC FaeLoN将图缩点,每个双联通分量中的两点一定可以相互到达。缩完点之后就是一棵树,也有可能是森林,需要建的变数即为整个森林的叶子节点个数除2,需要注意的是当一个树只有一个节点的时候,需要和其他节点建一条入边,一条出边,贡献度为2.#include #include #include #include #include原创 2015-09-11 20:49:20 · 683 阅读 · 0 评论 -
uva 1395 - Slim Span(生成树)
题目链接:uva 1395 - Slim Span#include #include #include #include using namespace std;const int maxn = 105;const int inf = 0x3f3f3f3f;struct Edge { int u, v, d; bool operator < (const Edge原创 2015-09-11 21:46:54 · 464 阅读 · 0 评论 -
uva 1265 - Tour Belt(生成树)
题目链接:uva 1265 - Tour Belt类似最小生成树算法,每次合并两个联通分量后,判断当前分量是否满足,满足则加上该分量的点数,这样最多做n-1次判断。#include #include #include #include #include #include using namespace std;typedef pair pii;const原创 2015-09-11 21:38:11 · 914 阅读 · 0 评论 -
uva 11504 - Dominos(强联通分量)
题目链接:uva 11504 - Dominos缩点,入度为0的点个数即为答案。#include #include #include #include #include using namespace std;const int maxn = 1e5 + 5;int N, M, in[maxn];int cntlock, cntscc, pre[maxn原创 2015-09-11 21:15:29 · 1060 阅读 · 0 评论 -
uva 11280 - Flying to Fredericton(最短路)
题目链接:uva 11280 - Flying to Fredericton增加一维表示到达当点停靠了几次,然后dijsktra做一遍最短路。#include #include #include #include #include #include #include #include using namespace std;typedef pair pi原创 2015-09-11 21:05:34 · 688 阅读 · 0 评论 -
uva 1464 - Traffic Real Time Query System(双联通+LCA)
题目链接:uva 1464 - Traffic Real Time Query System必须经过的点一定是切点,将图缩点,以块和切点建立一棵树,然后即是在树上查询两节点路径上切点数,求出LCA容斥一下。#include #include #include #include #include using namespace std;typedef pair原创 2015-09-12 22:20:41 · 1150 阅读 · 0 评论 -
uva 1504 - Genghis Khan the Conqueror(生成树)
题目链接:uva 1504 - Genghis Khan the Conqueror类似次小成树,先根据已知边建立最小生成树。然后在此基础上,考虑未被选中的边,处理出两两节点间权值最小的边,即为替换最优边。处理的过程为枚举每个点做根,dfs回溯处理,并维护。#include #include #include #include #include #include原创 2015-09-12 22:27:00 · 1015 阅读 · 0 评论 -
uva 1537 - Picnic Planning(生成树)
题目链接:uva 1537 - Picnic Planning先剔除需要被控制度数的节点,我们记作根,然后对剩下的节点做最小生成树,如果剩下的联通分量数n大于K,则无解。如果选K条边还不能使各个分量联通也是无解的。接着从根连接的边中选出最小的边连入相应的联通分量,注意一个联通分量选一条,这样有n条,保证节点联通。然后如果度数还允许,考虑增加一条边,先预处理出根到各个节点的路径上权值最大原创 2015-09-12 22:42:12 · 1111 阅读 · 0 评论 -
uva 1006 - Fixed Partition Memory Management(完美匹配)
题目链接:uva 1006 - Fixed Partition Memory Management以任务为X,Y为每个处理器在倒数第几个完成,任务xi连向yj的边权值即为任务xi对处理器的时间贡献值,用KM算法求解。#include #include #include #include using namespace std;const int maxn = 5原创 2015-09-23 21:47:34 · 1038 阅读 · 0 评论 -
uva 1459 - Flowers Placement(二分图匹配+暴力)
题目链接:uva 1459 - Flowers Placement暴力,在暴力的基础上用二分图匹配剪枝,如果当前位置放k,导致后面的位置不能匹配,即可回溯。#include #include #include #include using namespace std;const int maxn = 205;int N, M, K, cnt, L[maxn]原创 2015-09-23 22:40:22 · 732 阅读 · 0 评论 -
uva 1411 - Ants(几何+完美匹配)
题目连接:uva 1411 - Ants以两点间距离做权值,建图,做完美匹配。如果两线段AB与CD向交,那么AD或者BC边的权值小于AB和CD。#include #include #include #include using namespace std;const int maxn = 105;const double eps = 1e-9;struct原创 2015-09-23 22:34:58 · 1325 阅读 · 0 评论 -
uva 1349 - Optimal Bus Route Design(完美匹配)
题目链接:uva 1349 - Optimal Bus Route Design权值变为负的即便为求最小值。#include #include #include #include using namespace std;const int maxn = 105;const int inf = 0x3f3f3f3f;int N, L[maxn], Lx[ma原创 2015-09-23 22:27:45 · 874 阅读 · 0 评论 -
uva 1327 - King's Quest(强联通)
题目链接:uva 1327 - King's Quest建图,然后求强联通分量,与王子处在同一个联通分量的公主即为可选。#include #include #include #include #include using namespace std;const int maxn = 4005;int N, pre[maxn], sccno[maxn], d原创 2015-09-23 22:24:28 · 755 阅读 · 0 评论 -
uva 12168 - Cat vs. Dog(二分图匹配)
题目链接:uva 12168 - Cat vs. Dog类似uva 12083#include #include #include #include #include using namespace std;const int maxn = 505;typedef pair pii;int N, M, K, L[maxn];bool T[maxn];原创 2015-09-23 22:20:02 · 817 阅读 · 0 评论 -
uva 12083 - Guardian of Decency(二分图匹配)
题目链接:uva 12083 - Guardian of Decency对于男女可以分成X和Y,矛盾的两个人之间建立一条边, 做二分图最大匹配,每条被选取的边表示只能有一人被选中。#include #include #include #include #include #include #include using namespace std;const原创 2015-09-23 22:17:01 · 849 阅读 · 0 评论 -
uva 1201 - Taxi Cab Scheme(二分图匹配)
题目链接:uva 1201 - Taxi Cab Scheme建图,X和Y集合均为N个点,如果接完第i个人之后来得及接j,那么从Xi建一条边道Yj。做最大匹配,如果选中Xi到Yj这条边,说明i和j用的是同一辆车,那么需要几辆车即为没有边连入的Y集合点数个数,即为N-最大匹配数。#include #include #include #include #include原创 2015-09-23 22:11:38 · 708 阅读 · 0 评论 -
uva 1175 - Ladies' Choice(稳定婚姻问题)
题目链接:uva 1175 - Ladies' Choice稳定婚姻问题裸题。#include #include #include #include using namespace std;const int maxn = 1005;int N, pref[maxn][maxn], order[maxn][maxn], jump[maxn];int fut原创 2015-09-23 22:06:05 · 921 阅读 · 0 评论 -
uva 11419 - SAM I AM(最小覆盖)
题目链接:uva 11419 - SAM I AM行列匹配,对于每个点,所在的行列建一条边,做最大匹配,所选中的边数即为需要的炮数,最后在构造一下输出答案。#include #include #include #include #include using namespace std;const int maxn = 1005;const int inf =原创 2015-09-23 22:04:04 · 1004 阅读 · 0 评论 -
uva 11383 - Golden Tiger Claw(完美匹配)
题目链接:uva 11383 - Golden Tiger Claw#include #include #include #include using namespace std;const int maxn = 505;const int inf = 0x3f3f3f3f;int N, L[maxn];int Lx[maxn], Ly[maxn], W[maxn]原创 2015-09-23 21:58:37 · 1082 阅读 · 0 评论 -
uva 10615 - Rooks(完美匹配)
题目链接:uva 10615 - Rooks显而易见,需要用到颜色种类即为行列中棋子个数的最大值k。问题是如何构造,建图,行和列去匹配,每次匹配一种颜色,将匹配到的边删除即可。需要注意的是,每次需要删除k条边,所以对于度数不足的点需要用无效边凑数,这样保证最后答案可以构造出来。#include #include #include #include using na原创 2015-09-23 21:55:45 · 1509 阅读 · 0 评论 -
uva 12167 - Proving Equivalences(强连通)
题目链接:uva 12167 - Proving Equivalences#include #include #include #include #include using namespace std;const int maxn = 20005;int N, M, in[maxn], ot[maxn];int cntlock, cntscc, pre[maxn原创 2015-09-07 23:12:43 · 639 阅读 · 0 评论 -
uva 11324 - The Largest Clique(强联通图+拓扑)
题目链接:uva 11324 - The Largest Clique强连通缩点后,以缩掉的节点数作为新点的权值,缩完点之后就是一张DAG图,然后做拓扑排序。#include #include #include #include #include #include using namespace std;const int maxn = 1005;int原创 2015-09-07 22:51:23 · 517 阅读 · 0 评论 -
uva 10765 - Doves and bombs(连通分量)
题目链接:uva 10765 - Doves and bombs求出整个图的联通分量,对于割点来说,就是割点连接的分量数,非割点为1.#include #include #include #include #include using namespace std;const int maxn = 10005;struct State { int u, v原创 2015-09-07 22:33:38 · 807 阅读 · 0 评论 -
uva 10537 - The Toll! Revisited(最短路)
题目链接:uva 10537 - The Toll! Revisited从终点向起点做最短路,维护到达节点最少需要多少个。#include #include #include #include #include using namespace std;typedef long long ll;const int maxn = 55;const int in原创 2015-09-07 22:30:39 · 965 阅读 · 0 评论 -
uva 1078 - Steam Roller(最短路)
题目链接:uva 1078 - Steam Roller建图,将一个点拆成8个点,分别是4个方向,以及入边是否加倍。然后做最短路。#include #include #include #include #include using namespace std;const int maxn = 105;const int inf = 0x3f3f3f3f;原创 2015-09-07 22:36:59 · 861 阅读 · 0 评论 -
uva 10816 - Travel in Desert(最小瓶颈生成树+最短路)
题目连接:10816 - Travel in Desert求出最小生成树,瓶颈值为n-1条边中最大那条,将所有权值大于瓶颈值的边舍去,剩下一张无向图,做一遍最短路。#include #include #include #include #include #include using namespace std;typedef pair pii;const原创 2015-09-11 20:38:47 · 921 阅读 · 0 评论 -
uva 10600 - ACM Contest and Blackout(次小生成树)
题目链接:uva 10600 - ACM Contest and Blackout求一遍最小生成树之后,枚举起点,求出两两点之间路径上权值最大边。然后用其他边替换,维护最小值。#include #include #include #include using namespace std;typedef pair pii;const int maxn = 105原创 2015-09-11 20:35:00 · 598 阅读 · 0 评论