- 博客(31)
- 收藏
- 关注
转载 ACM常用算法分类
数据结构 栈,队列,链表 •哈希表,哈希数组 •堆,优先队列 双端队列 可并堆 左偏堆 •二叉查找树 Treap 伸展树 •并查集 集...
2018-08-28 15:02:42 2092
原创 HDU - 5965 -- 扫雷
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=5965中文题面= =。我们考虑每一列,只可能安放0,1,2个雷。对于每一种情况,假如第一列的雷数确定了,那么后面的每一列都确定了,每一列的安放数量为num[i]=a[i-1]-num[i-1]+num[i-2]。但可能会出现不合题意的情况,因而需要检验a[n]是否满足题意。代码:#in...
2018-08-24 16:56:12 125
原创 HDU - 5691 -- 传递 O(n^2)做法
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=5961个人认为,这道题的时间限制应该改为1000ms,6000ms导致大量O( n^3 )的暴力代码就这样水过去了。思路:首先考虑,如果一个竞赛图存在环,那么它一定不满足传递性。对于P是这样,对于Q也是这样。如果存在一个环,其一部分有P中的边组成,另一部分由Q组成。若P满足传递性,则存在...
2018-08-23 22:33:57 186
原创 POJ - 3169 -- Layout
题目来源:http://poj.org/problem?id=3169思路来自:https://blog.csdn.net/mengxiang000000/article/details/52613328差分约束系统题目。题目要求即是求出an-a1的最大值。如果只考虑ml的情况,则可以推出:a1-a2<=k1; -- 1a2-a3<=k2; -- 2a1...
2018-08-22 20:53:02 99
原创 HDU - 3037 -- Saving Beans
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=3037题意:给你m个相同的bean和n棵不同的树,每棵树可以放也可以不放beans。问有多少种放的方案。思路:可以转化成m个相同的小球,n+1个不同的盒子的模型。n+1是因为这n棵树可以放不到m个小球,也就相当于一个新的盒子可以用来放小球。对于这类组合问题,我们可以采用插板法。首先有m个小球...
2018-08-19 09:47:43 427
原创 POJ - 3255 -- Roadblocks
题目来源:http://poj.org/problem?id=3255次短路模板题。Dijkstra算法实现。代码:#include <cstdio>#include <iostream>#include <queue>#include <cstring>#include <cstdlib>#include <...
2018-08-18 15:34:02 206
原创 HDU - 4118 -- Holiday's Accommodation
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4118树形dp,思路来自:https://www.cnblogs.com/kiuhghcsc/p/5707140.html题意:给定一棵树,每个节点的人需要离开此节点到另一个节点,且任意两人不能到相同的节点,求经过的路程的最大值。思路:对于每条边<u,v>,其最多被经过的次数最多...
2018-08-17 14:27:05 143
原创 POJ 1319 -- Pipe Fitters
题目来源:http://poj.org/problem?id=1319结果为0的时候输出“grid”。实现详见代码:#include <cstdio>#include <cstring>#include <iomanip>#include <iostream>#include <algorithm>#include...
2018-08-14 20:06:41 195
原创 POJ-2676--Sudoku POJ-2918-- Tudoku
题目来源:http://poj.org/problem?id=2918 http://poj.org/problem?id=2676剪枝+位运算。优化策略:每行每列按照已填好的数量进行排序,优先填已经填过的多的,这样可以减少搜索的宽度。代码:#include <cstdio>#include <cstring>#include <iomanip...
2018-08-14 15:28:54 153
原创 Gym - 101666E -- Easter Eggs
题目来源:http://codeforces.com/gym/101666/attachments由于是求最小距离的最大值,因此很容易想到二分答案。在验证每一个值的过程中,我们可以将距离<mid的边保留,>mid的边删除,因此变成了求二分图的最大独立集的问题。相关概念及定理:https://blog.csdn.net/moon_sky1999/article/details...
2018-08-09 22:37:08 283
原创 ZOJ - 3195 -- Design the city
题目来源:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3195给定一棵树,查询连通任意三点的路径的总长度。设给定的三点为x,y,z。三点之间的路径总长度=(lca(x,y)+lca(y,z)+lca(x,z))/2。代码:#include <cstdio>#include <cstr...
2018-08-09 21:08:51 150
原创 POJ - 1236 -- Network of Schools
题目来源:http://poj.org/problem?id=1236最开始做的时候理解错题意了QWQ,WA了几发。题目大意:给定一个有向图,第一问是选择部分的节点,以这些节点为起点可以遍历整个图,最少要选几个节点。第二问是问添加最少多少条边,使得以任意节点为起点,均可以遍历整个图。思路:先用tarjan求出整个图的所有强连通分量,对每个连通分量进行缩点,处理出缩点后的图。...
2018-08-09 16:52:42 97
原创 POJ - 2186 -- Popular Cows
题目来源:http://poj.org/problem?id=2186思路:先处理出所有的强连通分量,将所有的强连通分量染色,缩点,这样原图变成了一棵有向树。如果出度为0的节点有且仅有一个,则这个节点所对应的强连通分量就是所有满足题意的节点。代码:#include <cstdio>#include <cstring>#include <algorit...
2018-08-09 10:38:40 111
原创 HDU - 5015 -- 233 Matrix
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=5015思路来自:https://blog.csdn.net/u011721440/article/details/39401515假设a[0][0]=23,对于第一行的元素,a[i][0]=a[i-1][0]*10+3。a[i][1]=a[i-1][1]+a[1]a[i][2]=a[i-...
2018-08-08 20:51:46 112
原创 Gym - 101485E Elementary Math
题目来源:http://codeforces.com/gym/101485/attachments二分图匹配+离散化。WA了好多发:1.‘+’、‘*’运算得到的结果可能相同,不要忘了加else。2.数据会爆int,一定要用long long 匈牙利算法进行二分图匹配。代码:#include <bits/stdc++.h>using namespace...
2018-08-07 22:32:26 213
原创 POJ 2104 -- K-th Number
题目来源:http://poj.org/problem?id=2104平方分割做法。效率不是很高,TLE了好几次才勉强过去。注意在处理区间的时候最好要用左闭右开的区间。代码:#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#i...
2018-08-07 12:55:06 94
原创 POJ - 2187 -- Beauty Contest
题目来源:http://poj.org/problem?id=2187求凸包的模板题。由于坐标值不超过M的凸多边形的顶点数只有O(M)个,因而枚举就好。代码: #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#includ...
2018-08-04 17:12:35 157
原创 POJ - 1127 -- Jack Straws
题目来源:http://poj.org/problem?id=1127判定线段相交+floyd。判定线段相交的模板来自《算法导论》P597。使用floyd处理出所有传递闭包(类似并查集,floyd更好写一些)。代码:#include <cstdio>#include <cstring>#include <iostream>#inclu...
2018-08-04 13:46:40 95
原创 POJ - 3111 -- K Best
题目来源:http://poj.org/problem?id=3111WA到怀疑人生系列的二分。。。思路来自POJ-Disscuss的:http://poj.org/showmessage?message_id=354940一定要注意跳出循环时保存的是可行解。eps的精度不要太高,可能会TLE。代码:#include <cstdio>#include <c...
2018-08-03 21:16:09 104
原创 HDU - 4027 -- Can you answer these queries?
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4027由于数据均在63位数的范围之内,因此每个数计算平方根的次数不会超过6次。更新时统计每个区段的更新次数,若>6则不再执行。维护区间和即可。注意本题有坑,输入时每组数据的x和y可能会是x>y。来自HDU-Disscuss的数据:781 12 3 7 9 6 2650...
2018-08-03 20:40:32 111
原创 POJ - 3057 -- Evacuation
题目来源:http://poj.org/problem?id=3057由于题目是让求所需花费的最小时间,因此可以采用二分答案的方法,验证答案是否可行。可以采用最大流来验证是否存在方案。建图方法:假设有一个源点S,与图中所有的“.”相连,流量为1,图中所有的“.”与其所能到达的"D"相连,流量为1。图中所有的“D”与假设的汇点T相连,流量为二分的值mid,跑从S到T的最大流,如果最大...
2018-08-03 16:40:18 243
原创 Gym 101128F -- Landscaping
题目来源:http://codeforces.com/gym/101128/attachments思路来自:https://blog.csdn.net/rain722/article/details/68928211Ford-Fulkerson算法计算最大流。所有低点与大汇点相连,左右高点与大源点相连,流量为B,在任意相邻两点之间连一条流量为A的边。建图之后跑图的最小割即为所求。代...
2018-08-02 20:32:21 222 2
原创 POJ - 2135 -- Farm Tour (费用流SPFA实现)
题目来源:http://poj.org/problem?id=2135Dijkstra算法实现:https://blog.csdn.net/moon_sky1999/article/details/81360017抽象为每条边的费用为边的长度,流量为1,这样即是求1-n流量为2的最小费用流。代码:#include <cstdio>#include <iostr...
2018-08-02 15:48:17 155
原创 POJ - 2135 -- Farm Tour (费用流Dijkstra实现)
题目来源:http://poj.org/problem?id=2135SPFA算法实现:https://blog.csdn.net/moon_sky1999/article/details/81360328建图的过程中,每条边要存储四次(正向反向的正权边和正向反向的负权边),这样处理出来的图可以看作是不含负权边的图,因此可以使用Dijkstra算法来实现最小费用流。代码:#inc...
2018-08-02 15:36:41 268
原创 HDU - 1533 -- Going Home
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1533先添加两个点s和t(源点汇点),图中的所有m和H可以看成是点。建图过程:1.s与图中所有的m之间建一条流量为1,费用为0的边。2.图中所有的m与图中所有的H之间建一条流量为1,费用为dis(i,j)的边。dis表示两点之间的距离。3.图中所有的H与s之间建一条流量为1,费用为0...
2018-08-02 14:22:53 152
原创 POJ - 3469 -- Dual Core CPU
题目来源:http://poj.org/problem?id=3469由于maxm开小了,RE了好多发。另外,G++交的TLE了,用C++过的。最小割问题,由定理知,最小割=最大流,因此可用最大流Dinic算法解决。代码:#include <iostream>#include <cstring>#include <cstdio>#incl...
2018-08-02 10:13:10 177
原创 HDU - 3549 - Flow Problem (最大流模板题--Dinic算法实现)
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=3549代码:#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <que...
2018-08-01 21:56:58 244
原创 POJ - 3281 -- Dining
题目来源:http://poj.org/problem?id=3281网络流建图,最大流问题。边的方向为:s->食物->牛->牛->饮料->t。将牛拆成两个顶点,之间连一条容量为1的边,这样避免了一头牛杯分配多组食物和饮料的方案,计算出图中的最大流即可。代码:#include <iostream>#include <cstri...
2018-08-01 20:43:12 161
原创 HDU - 3549 - Flow Problem (最大流模板题--Ford-Fulkerson算法实现)
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=3549代码:#include <bits/stdc++.h>#define ll long longusing namespace std;struct edge{ int to,next,cap,rev;}e[10010];bool vis[1010];int...
2018-08-01 19:47:45 136
原创 POJ - 3041 - Asteroids
题目来源:http://poj.org/problem?id=3041匹配的相关概念及定理见:https://blog.csdn.net/moon_sky1999/article/details/81331795可以等价为二分图中求最小顶点覆盖,由相关定理可得,最小顶点覆盖等于最大匹配,因此只需用匈牙利算法求出最大匹配即可。代码:#include <iostream>...
2018-08-01 16:09:06 99
原创 匹配的相关概念
记图G=(V,E)。1.匹配:(边集)在G中两两没有公共端点的边集合ME。2.边覆盖:G中的任意顶点都至少是F中某条边的端点的边集合FE。3.独立集:(点集)在G中两两互不相连的顶点集合SV。4.顶点覆盖:G中的任意边都有至少一个端点属于S的顶点集合SV。 a.对于不存在孤立点的图,|最大匹配|+|最小边覆盖|=|V|。b.|最大独立集|+|最小顶点覆盖|=|V|...
2018-08-01 15:37:18 538
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人