![](https://img-blog.csdnimg.cn/20210304234359127.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ACM/算法竞赛
个人竞赛刷题题解博客
https://www.cnblogs.com/Tianwell/
Tianwell
有梦想还得继续努力!
展开
-
POJ-1182 食物链 (带权并查集)
题意:有三种A吃B B吃C C吃A类关系(即abc之间有向关系)给出关系然后判断其中部分所给错误的关系数 判定条件: 1) 当前的话与前面的某些真的话冲突,就是假话; 2) 当前的话中X或Y比N大,就是假话; 3) 当前的话表示X吃X,就是假话 输入:给出个数N(1 <= N <= 50,000),关系个数K(0 <= K <= 100,000)然后K行"1 X Y"...原创 2019-07-12 15:23:04 · 154 阅读 · 0 评论 -
hdu-2586 How far away ? (tarjan)
//题意:还是同样的一棵树, 但是在结点之间有路径权值 //问两个点,求出其之间的距离 //思路:找到两个点之间的lca然后,将这两个lca路径的权值和相加即为答案 //也就是在普通lca求法上增加一个权值数组用来求和 //或者每个结点记录一个到根结点的权值大小,然后两个结点减去其lca权值即为答案 这里使用第二种方法:在tarjan递归遍历时同时将路径权值相加,得到某结点到根的权值和即 ...原创 2019-07-12 14:56:49 · 117 阅读 · 0 评论 -
Closest Common Ancestors POJ1470(Tarjan)
题意:给出一棵树,给出问题然后求解其最小共同祖先,以及出现的次数 输入格式:由于输入格式限定所以在scanf时要注意格式 样例格式 5 4:(0) 2:(1) 3 3:(0) 6 (1 5) (1 4) (4 2) (2 3) (1 3) (4 3) 思路:这里用tarjan离线处理,由于tarjan是寻找find(x)的祖先,所以当find(x)被找到时用ans[]数组存储的祖先出现的次...原创 2019-07-12 14:47:24 · 85 阅读 · 0 评论 -
POJ-1330 Nearest Common Ancestors (Tarjan)
题意:求某棵树中Lowest Common Ancestor(最小公共祖先)裸题然后套模板 格式: 样例个数t;结点个数n; (n-1条)边edge;第n行为所求 a b; 思路:解lca无非常见三种方式Tarjan,倍增,rmq;这里我暂时使用Tarjan来解 由于是模板题,所以对Tarjan原理适当写一下; Tarjan作为一种离线的算法,其主要思想是利用 类似并查集的方法求 公...原创 2019-07-11 18:54:18 · 112 阅读 · 0 评论 -
HDU-1028 Ignatius and the Princess III (母函数)
题意:给出一个值n,有1~n的点数,然后无限次使用求凑出n的组合次数 思路:和HDU1398大致类似,就是求硬币组合数这样的类型,然后面额部分不同就在面额处进行修改; 所以直接利用模板得题解: #include <iostream> #include <cstdio> const int maxn=1000; using namespace std; int c...原创 2019-07-13 11:52:13 · 93 阅读 · 0 评论 -
HDU-1398 Square Coins (母函数)
题意:有面额为 1,2^2,3^2....n^2(n<=17)的硬币,然后给出一个需要支付的面额大小然后求使用硬币支付的组合个数(硬币个数不限) 思路:如果从暴力的角度来将的话,就是写17个循环复杂度为n^17(所以看着就不可行),因此就要寻求一种能解决组合的方式恰好母函数有这个特性。 第一篇母函数题所以总结一下概念: 假设有幂函数x^n,由幂函数的乘法性质可得,(1)幂函数相乘即指数...原创 2019-07-13 11:33:05 · 136 阅读 · 0 评论 -
POJ-1703 Find them, Catch them (并查集)
题意:即给出存在势力不同的帮派a,b(两个不相交的集合);然后给出某序号之间关系:帮派不同(互斥),然后在根据已给出的信息判断某两个成员之间是否在同一个帮派(某两个元素是否相交,或者关系无法确定) 思路:利用并查集的特性,(不明确给出关系,利用元素之间的关系可以得到集合之间的信息). 同时此题也是 POJ-1182 食物链的 简化版本(那道题给出三个集合关系,如果用此题的思路就是开三倍的集合大...原创 2019-07-12 19:53:20 · 144 阅读 · 0 评论 -
POJ-1611 The Suspects (并查集)
题意:题目很长...总结下来就是 输入人个数n(编号0~n-1), 有m组信息(m个例子),其中默认标号0的为嫌疑人, 和0一组的都为嫌疑人,然后确定嫌疑人个数 思路:集合运算,就是将与0相关联的(可能式间接关联)放在一个集合中然后统计人数.所以利用并查集的Union,find,judge函数来统计个数。即最后用judge函数判断是否与0在同一个集合中,如果是则ans++; 完整代码: ...原创 2019-07-12 18:23:45 · 171 阅读 · 0 评论 -
POJ-1986 Distance Queries (tarjan)
题意:题目很花哨,题意和hdu2586一样(可以说除了输入格式略微不同以外),求两个结点之间的最小距离 输入:第一行结点个数n,边数t,然后问题数目k 思路:每个结点记录一个到根结点的权值大小,然后两个结点减去其lca权值即为答案.在tarjan递归遍历时同时将路径权值相加,得到某结点到根的权值和 由于该题没有给出n的数目,不能开大了所以就定了一个合适的大小(wa了试出的...) 完整代码...原创 2019-07-12 15:52:44 · 224 阅读 · 0 评论