摘要: 题意:给出两个不同方案,每个方案使得所有的城堡被连通(形成连通图),同时使边权之和尽量小,问第一个方案与第二个方案的大小关系。解题思路: 因为m个桥能使n个城堡联通,而两个大爷的方案中至少存在一个桥不相同,那么我们判断这是一个求次小生成树的方法。 求次小生成树模板: ... 阅读全文
posted @ 2018-06-08 13:01 romaLzhih 阅读(209) 评论(0) 推荐(0)
摘要: 题意:问能否构造一个矩阵,使得矩阵中的每个数字范围是1-20并且满足矩阵每行之和与矩阵每列之和与所给数组相等。 思路:尽管矩阵是20*20 ,但是如果爆搜复杂度依旧爆炸,我们考虑使用网络流解决这个问题,下面重点讲解怎么构图。至于怎么写可以参考紫书,与网上的模板。 建图:先来考虑本题的限制是什么,首先 阅读全文
posted @ 2018-06-08 12:59 romaLzhih 阅读(1386) 评论(0) 推荐(0)
摘要: 板子: 题意:N个城堡,M个桥,每个桥的权值都不一样,题目要求能使城堡彼此联通的所有桥集合里面权值最小的那种,由此可以判断这是一道求最小生成树的题。 POJ3723 题意:有 N 个男人 M 个女人,给出若干男女之间的 1~9999 之间的亲密度关系,征募某个人的费用是 10000 -(已经征募到的 阅读全文
posted @ 2018-06-08 12:58 romaLzhih 阅读(138) 评论(0) 推荐(0)
摘要: 题意: 给定数字n,m,(1≤n,m≤500000) 将n变为n*2的花费为2,将n变为n-3的花费为3,要求过程当中所有数字都在[1,500000]区间内。 求将n变为m的最少花费。 思路: 将每个数字视为图论中的点,数字之间的转换视为图论中的边。有向图! 500000个点,连边(i,i*2)权值 阅读全文
posted @ 2018-06-08 12:58 romaLzhih 阅读(153) 评论(0) 推荐(0)
摘要: 求联通快模板 Uva 油田#include#include#includeusing namespace std;const int maxn = 1000 + 5;char g[maxn][maxn];int m, n, id[maxn][maxn];void df... 阅读全文
posted @ 2018-06-08 12:58 romaLzhih 阅读(101) 评论(0) 推荐(0)
摘要: 题意: 有n个点,m条边,问能不能找到一条路把所有的边都经过一次。求解思路: 因为是要遍历所有的边,所以这个问题就可以规约到求一个图的欧拉路径上。 但是这道题的数据是比较严格的,我们不能写递归,因此就要用非递归写欧拉回路,参考博客如下: https://blog.cs... 阅读全文
posted @ 2018-06-08 12:57 romaLzhih 阅读(170) 评论(0) 推荐(0)
摘要: 题意: 给出一个无向图,问从1到n是否存在一条长度为L的路径。 n,m<=50,1<=路径长度<=10000,L<=10^18 思路: 改变一下思路,我们发现,假设从起点1走到终点N有一条路径的长度为a,假设它再往一条与终点相连的长为b的路径反复走无数次后使得路径长度到达了T,那么一定有(T-a)% 阅读全文
posted @ 2018-06-08 12:57 romaLzhih 阅读(293) 评论(1) 推荐(0)
摘要: 一般地,差分约束系统分两类:求最大差和最小差 原因如下: 对于线性规划问题,上述不等式的特点就是式子的左右两边都只有 1 个变量( B 为常数)。这与图上的最短路是类似的。记从起点 s 出发,到各个定点的 v 的最短距离为 d(v),因此对于每条权值为 w 的边 e =(v,u),都有 d(v)+ 阅读全文
posted @ 2018-06-08 12:56 romaLzhih 阅读(146) 评论(0) 推荐(0)
摘要: 题意: 给你N个点的一幅图,初始图中有M条边,每次操作可以使得一个点连接的所有点变成一个团,问你最少多少次操作可以使得整个图变成一个团.解法: 因为N很小 所以我们可以二进制压缩来表示一个点与其他点之间的关系。二进制的第i位代表标号位i+1的人。例如标号为1的人认识标... 阅读全文
posted @ 2018-06-08 12:56 romaLzhih 阅读(139) 评论(0) 推荐(0)
摘要: 题目: http://poj.org/problem?id=1776题意: 给出一个n*n的矩阵,若第i个任务做完之后可以做第j个任务,则矩阵的第i行第j列为1,否则为0。机器完成一项任务之后会自动转到下一个任务,否则机器会自动停止。 求出最少的启动次数,输出每次启动... 阅读全文
posted @ 2018-06-08 12:56 romaLzhih 阅读(246) 评论(0) 推荐(0)
摘要: 题意: 给定m*n的棋盘,有若干只咕咕。希望去掉一部分咕咕使得剩下的咕咕在上下左右四个方向越过咕咕槽的情况下都看不到咕咕。 思路: 建立一个二分图的方法有很多,这里采用xy二分。 假设没有咕咕槽的情况下,咕咕的最大放置数其实有点像八皇后问题,当然这里我们用最大匹配的... 阅读全文
posted @ 2018-06-08 12:56 romaLzhih 阅读(213) 评论(0) 推荐(0)
摘要: 1 int a[MAXN], ans[MAXN > 1; 21 Build(l, mid, rt > 1; 32 //PushDown(rt,mid-l+1,r-mid); 若既有点更新又有区间更新,需要这句话 33 if (L > 1; 47 PushDown(rt, mid - l + 1, r - mid); 48 if (L mid) 51 ... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(335) 评论(0) 推荐(0)
摘要: 并查集模板 1 int p[MAXN]; 2 int r[MAXN]; 3 4 void init(int n) { 5 for (int i = 1; i <= n; i++) { 6 p[i] = i, r[i] = 0; 7 } 8 } 9 10 int find(int x) { retur 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(122) 评论(0) 推荐(0)
摘要: 题意: 给出类似剪刀石头布的相互克制关系,看是否有矛盾条件出现。经典题目,根据poj 1182“食物链”改编。题解: 题面描述了一些生物之间的关系,不难会想到并查集。 但是生物关系不是确定的,所以要在描述关系的集合当中加入一些额外的参数。 因为只有三种生物,所以我们定... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(97) 评论(0) 推荐(0)
摘要: 题意: 分析: 哈夫曼树 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。对于一颗哈夫曼树,我们把所有节点排序,权值大... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(180) 评论(0) 推荐(0)
摘要: 题目: 给你一个数组A[1::n],初始时每个元素都为零。对数组完成一些操作: 第一种可能,给你两个数p 和x(1#includeusing namespace std;typedef long long ll;const int maxn = 1e6 + 5;str... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(297) 评论(2) 推荐(0)
摘要: 题意: 给定一个带权有向图,若P(A,B)表示节点A到B的最短路长度,选择四个节点ABCD,使得P(A,B)+P(B,C)+P(C,D)最大。 节点数n在1,000以内,边数m在2,000以内。 思路: 首先先将两两点之间的最短路都算出来。 之后建立pre和next两... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(260) 评论(0) 推荐(0)
摘要: 转自:http://hzwer.com/8053.html 很好的分块知识讲解。可能涉及的几个词语解释: 区间:数列中连续一段的元素 区间操作:将某个区间[a,b]的所有元素进行某种改动的操作 块:我们将数列划分成若干个不相交的区间,每个区间称为一个块 整块:在一个区... 阅读全文
posted @ 2018-06-08 12:54 romaLzhih 阅读(274) 评论(0) 推荐(0)
摘要: 题意: 与吃瓜题1题意一致,只是西瓜的种类从两种变成了无数种。题解: 在吃瓜题1里,由于只有两类西瓜,因此我们可以使用分类的方法来表示异同。而在这题中,由于种类数无穷,我们只有记录每个节点的对立节点,在询问x与y的关系时,我们查询x的对立节点集合中是否出现y节点。 那... 阅读全文
posted @ 2018-06-08 12:54 romaLzhih 阅读(100) 评论(0) 推荐(0)
摘要: 题意: 只有两种西瓜,给出一系列信息——两个西瓜同种或异种,询问某两个西瓜的关系。题解: 对于每个节点建立对立节点。 约束关系: A、B相同:使用并查集合并(A、B),合并 (对立A、对立B) A、B不同:使用并查集合并(A、对立B),合并( B、对立A)若节点x与... 阅读全文
posted @ 2018-06-08 12:54 romaLzhih 阅读(161) 评论(0) 推荐(0)