ACM_题解
qq564690377
这个作者很懒,什么都没留下…
展开
-
hdu 3514 Queen’s Case
题意:在一个格子图当中,每一个回合皇后先走,然后是士兵走,现在怎么定义我们的胜负呢,如果一个回合结束后,那么如果皇后和士兵在一个格子之内,就是士兵赢,如果皇皇后在出口处而士兵不在同一个格子里面,那么就是皇后赢,否则进行下一回合,每一个人物可以向周围4格走,或者不走,总共5种选择。解法:最后的结果会有三种,皇后赢还是士兵赢,还是平局就是双方都不能赢,普通的dag上面的转移博弈就是规定了无环,同时原创 2013-12-03 22:15:41 · 1324 阅读 · 0 评论 -
aizu 1318 Long Distance Taxi
题意:在一个无向图中,现在指定起点和终点,出租车在开,但是因为油箱的油有限制,所以只能行驶一定的距离,现在在一些特定的城市中会存在加油站,其他城市不能加油,询问存在一条最短的路径,从起点到终点的合法路径,城市数上限6000.解法:因为有存在油量的限制,所以既然到了一个城市之后肯定是加满油,那么到达下一个加油站之间的最短路一定是在限制之内的,所以先对所有的加油城市进行一个预处理,处理处能原创 2013-11-01 21:33:50 · 679 阅读 · 0 评论 -
hdu 4118 Holiday's Accommodation
题意:在一棵树中有n个点,然后有n个人在每个节点上,现在要给每一个人在树上找到一个新的位置安排,相当于一个置换群,询问如何使得每个人的距离 之和 达到最大。刚开始不好想,觉得没法处理,后来渐渐的想到了一个简单的模型,就是所有的距离可以分为树上的每条边来贡献的,所以就是如果看每一条边,它的两个节点左右都是一棵树,那么最后的置换群中,有一些左边的点会进入右边,那么假如有K个,那么这条边贡献的距离就原创 2013-11-02 18:53:42 · 737 阅读 · 0 评论 -
13 成都 F
在成都的时候跪舔这道题目,确实让人不甘心,唯一能做的只是希望下一场能正常发挥吧。这道题目因为陈题的关系吧,现场一血来的特别快,而且还成为了最水的一道题目。题目大意:在10万个点的一个无向图中,所有的边不是黑边就是白边,现在给定所有边的属性,问判断是否能形成一颗生成树其中包括了斐波那契条白边。解法:做法就是求一次最小生成树和最大生成树,那么所有生成树中能包含的白边就是 最小和最大之间的所原创 2013-10-29 20:48:21 · 794 阅读 · 0 评论 -
codeforces 160D - Edges in MST
题目大意:给定一个10万个点的无向图,求出任意一条边是在3种属性,(1)存在于任意一个mst上 (2)存在至少一个mst上 (3)不存在任意一个mst上。发现不写题解不长记性啊仔细分析后发现,如果按照最小生成树的解法,先把边按照边权进行排序,那么这个时候,如果这个边不是存在于所有的mst上面,等价的条件就是和他长度相等的那些边可以和他进行互换。(1)将边按照边权进行排序,一次取出所有长原创 2013-09-25 17:36:44 · 1314 阅读 · 0 评论 -
hdu 4650 Minimum Average Weight Path
在最优比例生成树问题中,对于01分数规划采用的是二分法来解决01分数规划的问题,白书上有一道题目,问50个点的无向图,平均权值的最小的环是多少。 联想到这道题,这道题目求的是全源平均最短路径,当然想当然地想到了枚举任意两个点然后二分求出值,虽然能出sample,TLE了,确实全源的情况下,这样枚举+二分的复杂度太高了。原创 2013-09-22 16:36:03 · 705 阅读 · 0 评论 -
hdu 4685 Prince and Princess
2013年长沙区域赛网赛I题 当时看到题就发现这题和hdu4685是一模一样的,但是很遗憾在比赛的时候居然没能过。深深的自责。写错一句代码题意:20000个点的二分图,冗余边的定义就是如果这条边进入匹配之后,总匹配数无论如何怎么选择都无法达到最大匹配。解法:先求出一次二分匹配,先考虑王子和公主都进入完美匹配的情况,那么对于任意一个王子,对公主建图,从他匹配到的公主连一条边到他剩余喜欢的公主原创 2013-09-23 22:27:10 · 1265 阅读 · 1 评论 -
ural 1752 Tree 2
题目大意:在一棵20000个节点的树中,有50000个点的询问,对于每个询问,要求求出距离某点固定距离的任意一个点。比赛的时候跪舔整场,算法确实不是很难,想不到 怎么破?先求出整个树的直径,从直径的两个端点开始进行dfs,可以证明,对于任意一个点的询问,要不就是在该点到直径上的根上的某点,否则就是在直径上的点。所以在这两次dfs中必定能找到解,否则就无解。原创 2013-10-05 22:46:32 · 749 阅读 · 0 评论 -
hdu 4765 Tsp
题目大意:在100个点中的图中,要求现在选择一条路径遍历所有点,而且,加了很多限制条件。分析:在比赛的时候以为是图论,然后看了一下,比赛的时候以为这么多条件,才100个点,那么我们就爆搜一下吧,赛后一看别人的tle代码,都是爆搜,幸亏比赛的时候被其他题目卡着没时间写这道题目,额解法:赛后看了清华的代码,终于给我找到一份比较简洁的代码,发现做法是区间dp。分析一下题目中的条件,可以得出几原创 2013-09-29 22:33:36 · 1529 阅读 · 2 评论 -
hdu 4337 King Arthur's Knights
有些构造题确实挺有趣的,好难题目大意:有150个骑士,每个骑士拥有至少半数的人是朋友,要求一条哈密尔顿回路。分析:判断哈密尔顿回路是没有充要条件的,好像也没有多项式算法来判断,幸亏离散里面有这样的一个定理,如果其中每个点的度大于(点数+1)/2,那么一定存在一条哈密尔顿回路,借助这个性质。这道题能够通过o(N^2)的算法构造出来。算法: 中等题,构造一个特殊图的Hamilto原创 2013-09-13 22:30:12 · 689 阅读 · 0 评论 -
hdu 4700 Flow
题目大意:100个点之内的一个无向图,现在已经得到了全源最小割矩阵,那么能不能求出一个满足这个最小割矩阵的图。解法:题解的意思如果存在解,那么一定可以构成一棵树,Gomory-Hu tree ,至于为什么是一棵树无法理解。现在的目标就是构造一棵树,特殊性在于这是一颗树,任意两个点之间的路径是唯一确定的,采用递归的策略去构造这棵树,路径确定下来之后所以先找到流量最小的那条边,这样子A = (原创 2013-09-13 14:41:18 · 1132 阅读 · 0 评论 -
hdu 4712 Hamming Distance
题目大意:给定10万个01字符串,对于任意两个字符串异或之后求出剩下1的个数的最小值分析:这道题很难进行预处理或者动态规划。但是这道题经过分析之后有几个特点,总长度很小,才10,最后的答案在20之内。做法1:可以进行ID,可以保证随机数据情况下如果串比较多,那么最后的答案肯定会比较小,然后对每个串进行搜索。我们还可以想到 因为总长度才20,所以总的状态才2^20,100万,那么如果采用原创 2013-09-13 14:30:07 · 788 阅读 · 0 评论 -
dag图中顶点覆盖问题
dag值得就是有向无环图,所以我们特别的针对无环这个特性。问题(1)最小路径覆盖问题,用最少的条数的链去覆盖掉我们所有的点,其中每一个点覆盖且仅能覆盖一次。因为无环,所以这里存在一类高效的解法,就是将原图中的点进行拆点, 然后进行二分匹配。完美解决。问题(2)如果还是在一个dag图中,我们采用链去覆盖掉所有的点,这样子前面的二分匹配肯定是没有办法解决了。首先联想到一种土办法。就原创 2013-08-03 20:29:22 · 1255 阅读 · 0 评论 -
hdu 4630 No Pain No Game
题目大意,原创 2013-07-31 23:16:04 · 847 阅读 · 0 评论 -
13成都A Assignment For Princess
题意:在一个80个点的有向图中,现在已经知道了这个图的点数和边数,边的权值是从1-M,现在需要构造一张图,满足以下三个限制(1) 从每一个点开始都可以到达另外任意一个点。(2)从图中每一个点开始都可以回到自己。(3) 图中的任意一个环上的权值和必须是3的倍数。解法:这道构造题,在赛后听到了威哥他们说的解法,今天自己也是差不多这么写的,但是总是觉得怪怪的,就是刚开始我们先放一个大环罩原创 2013-11-16 20:24:53 · 842 阅读 · 0 评论 -
URAL 1979 Resources Distribution
题意:一个6面的魔方,每个面的阶数在1-100 之间,那么总共有6 * n * n个面,现在需要将1-6*n*n 这些数字填到魔方的格子中去,使得现在魔方三个维度上面总共有 3*n个环,使得保证每个环的和都相等。构造方法:因为所有的点都被计算了两次,所以总和是确定的,那么每一个环的总和就是确定的,等于2*n * (6*n*n +1) ,所以只要满足 一个点和他对面的那个点一定是在两个个环之中的原创 2013-11-05 20:05:12 · 732 阅读 · 0 评论 -
hdu 4780 Candy Factory
题意:M个工厂生产N个糖果,现场过的人很少,但这道费用流本身并不是很难。建图:我的建图是,每个糖果要么从初始状态转移过来,要么从其他糖果生产完的状态转移过来,同时拆点保证每个糖果只能生产一次。另外看了杨神的建图,复杂度一样,但是他的抽象的更好,直接就是选择来源,这也是一般费用流的想法。贴一下他的代码#include #include #include #include原创 2013-11-19 20:12:13 · 1455 阅读 · 0 评论 -
hdu 4807 Lunch Time
题意:在一个有向图当中,现在每一条边带有一个容量,现在有K个人在起点,需要到终点去吃饭,询问这K个人最后一个人到达食堂的最小时间是多少。想法:联想到普通的网络流,那么我们网络流可以很轻松的求出两个点之间的最大容量是多少,但是现在的问题就是刚开始在起步的时候那么最开始的容量是不可能到达最大的,因为人还在途中,假设我们从时间角度来分析这个问题,再联想到我们网络流求法,费用流当中,求出来的就是当然费原创 2013-12-03 19:03:39 · 1855 阅读 · 0 评论 -
sgu 525 Revolutionary Roads
题意:在一个1000个点中的有向图中,现在可以进行的操作就是将一条有向边修改成无向边,那个图中的最大的强连通分量的点数是多少。分析:很显然的分析就是那么修改的那一条边一定不是强连通分量之内的边,否则那么就是没有效果的,如果能产生效果的一定是修改后可以将多个强连通分量融合起来,那么现在的问题就是如果转变一条边之后,能够连通多少个点,如果每次去算的话会比较麻烦,这个问题可以进行n^2的预处理,预处原创 2013-12-02 19:36:43 · 1333 阅读 · 0 评论 -
uva 12534 Binary Matrix 2
题意:在一个40*40的矩阵中,仅存在两种元素,0 和1,现在的要求就是需要改变最小的次数(01互换),使得每一行之间1的个数相同, 并且每一列1的个数相同,12年泰国的一个赛区,现场过的人比较少。解法:费用流,不会搞,看了ac代码,发现是这样的,先枚举台面上最后总共1的数目,然后建成二分图,每行建成一排,每列也建成一排,那么具体的费用就是ones-now + costones就是图中所有原创 2013-12-02 22:25:33 · 2105 阅读 · 0 评论 -
uvalive 6206 Reduce the Maintenance Cost
题意:在10000个点的一个无向图中,定义P = 删除某条边之后有多少点对因此不连通,那么给每一条边定义一个val值,val = P*len,len 就是本身这条边自己的长度,每一条边的val就是维护费用要求连接这条边的两个点中的一个点来承担,现在每个城市最初有一个 初始的维护费用,问 怎么样的一个分配方案能取到 每个城市的维护费用最大值最小。解法: 很明显桥边具有val值,其他边是原创 2013-11-13 16:27:47 · 878 阅读 · 0 评论 -
uva 12544 Beehives
题意:无向图中所有的边权都是1,现在这道题目的意思就是要找出图中最小的一个环。解法:之间做过一道类似的题目,今天被坑惨了,floyd的做法,严格n^3,普通的floyd里面加了一个枚举环的部分,但是这道题目数据比较大,n=500,然后就无情的tle了。更高级的做法是从每一个点开始bfs一下,然后记录每个点来自的前驱,然后如果一个另外一个点没访问过,那么就加入队列,如果已经访问过,必定构成一原创 2013-11-27 21:18:05 · 940 阅读 · 0 评论 -
ural 1905 Travel in Time
题意:最短路的变形,10万个点,10万条边的有向图,对于每条路径描述4个信息,就是出发点,抵达点,出发时间,抵达时间,然后告诉我们现在所在的星球和时间,还有需要到达的目标星球和截止时间,现在的要求就是询问一种能够到达目标星球在规定的时间内的方式, 其中几点要注意的是,可能时间倒流,并且一个人不能重复呆在一个请求上在同一时刻。分析:假如,我们如果删去一个人看见自己的这个约束,那么怎么做,直接bf原创 2013-11-26 22:08:10 · 826 阅读 · 0 评论 -
博弈搜索中的记忆化
先看下面几道题目 uva 11884 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23316hdu 4778 http://acm.hdu.edu.cn/showproblem.php?pid=4778hdu 4753 http://acm.hdu.edu.cn/showproblem.php?pid=原创 2013-11-10 19:33:26 · 769 阅读 · 0 评论 -
hdu 3732 Graph Reconstruction
题意:长沙现场赛的一道题目,现在的要求是给定一个n个点的无向图的度序列,现在的要求是构造出图,hdu上面有一题是要求给定一个度序列,那就很简单了,根据havel定理直接可以得出解,但是这道题目问题在于要判断是能产生一组解 还是多组解,如果能够产生多组解的话要输出两个解。解法:先根据havel定理构造出一个解,那么另外一个怎么搞出来,一种比较暴力的方法就是就是删去每一条存在的边,然后再次现在进行原创 2013-11-24 22:21:28 · 1097 阅读 · 0 评论 -
sgu 544 Chess Championship
绝好的一道题目,以前没做到过,要不是队友想到这个dp,要我还真不会搞。题意:现在有两个比赛队伍,每个队伍的个数都在500之内,现在两个队伍之间的能力不会重复,要全排列安排比赛,问存在多少种排列使得 A的得分减去B的得分为K,得分的定义是本队的能力值大于对面的那个人。解法:刚开始模型很混乱,根本没法搞,最后的解法是这样的,将所有的能力值进行从小到大的排序,然后dp[pos][a][b原创 2013-11-22 22:47:49 · 877 阅读 · 0 评论 -
uva 12618 - I Puzzle You
题意:题意还是非常简单的,就是一个三阶魔方18种方法改变,跟普通玩魔方一样,题目要求搜出七步之内的解,想到了IDA*,18^7还是稍微有一些大的,大约有6亿的状态,需要 一个比较可靠地估价函数。解法:刚开始以为旋转一个面之后最多改变12个格子,就用与当前中心点不同的格子数除12,这样返回wa,检查了很久想不到,后来才想起来其实旋转中间这个面可以改变24个面,一下子就tle了,这个估价函数的作用原创 2013-11-21 20:09:24 · 966 阅读 · 0 评论 -
hdu 3762 K-Graph Oddity
题意:在一个10000个奇数点的无向图中,现在选出最大度为k,然后 如果k是偶数,k++, 现在需要使用k种颜色去将所有的点 进行染色,要求任意相邻的两个点不能相同。询问一种染色方案。解法:刚开始的想法是安排一种染色序列,然后如果有矛盾,然后就去调整点的染色,后来发现这样实在搞不出。看了别人ac的代码,可以这样说,从任意一个点开始任意得到一个遍历序列(包括bfs和dfs),然后开始按照这个序列原创 2013-11-07 16:05:06 · 1329 阅读 · 0 评论 -
uva 12616 - Gymman vs Fila
题意:这道题是在20000个点中选出有多少三元组 (a, b, c ) 满足 在图中割去c之后a和b之间不连通。解法:如果要删去一个点一些点不连通,那么这个点一定是割点,那么就对于每一个割点进行统计,统计出每一个割点删去之后,会形成几个联通块,并且统计出里面的数目,这样就可以算出来了,怎么统计呢,在做完点双连通之后, 这个时候我们就统计出了每一个极大双连通分量,简单的分析之后,每一个极大点双连原创 2013-11-21 21:36:38 · 1135 阅读 · 0 评论 -
hdu 3097 The Partition of A Graph uva 11396 Claw Decomposition
这两道题比较像,就放在一起写吧。题意:第一道题,在1000个点的无向图中,现在要把所有的边分成一对一对的,要求这一对边必须要在图中相邻,询问存不存在这样的一种划分方法。第二道题,在400个点的图中,保证每个点的度都是3,那么现在要分成爪子的形状,就是中间一个点度为3,其他外面连接了三个点,询问能不能将图中划分成一些爪子。想法:第一题中,如果这样考虑这个问题,将原图中的点看成边看原创 2013-11-20 21:06:32 · 1007 阅读 · 0 评论 -
叉姐专场小记 (scu 4290-4299)
4290 Xor :题意:给定A集合和B集合,集合中的个数都是奇数个,询问是否存在x使得A集合中的每个数字异或后 使得和B集合相同。刚开始没看懂是集合,坑了很久。刚开始不会做,被点播了,因为异或,所以a1^x ^a2^x .... ^b1 ^ b2 = 0;又因为x奇数个,所以可以直接计算出x的数字,当然这个是计算出来的,然后再一遍,验证这个x是否成立。4291原创 2013-07-21 16:42:59 · 1870 阅读 · 0 评论 -
博弈
博弈原创 2013-07-12 12:14:23 · 818 阅读 · 0 评论 -
hdu 2482 Transit search
这道题目直接被威哥定义为了阅读题,赛后做了下,感觉还是很不错的一道题目,题目确实比较长,首先要把给定区块的坐标转化为全局的起始点和终点的坐标.然后需要从起点和终点需要搭乘至少多少辆公交车,图中给定至多5000个车站,在1000m范围内的公交车站可以上下车,有至多100条公交线路,每条公交线路至多途径30个公交站台. 粗粗的感觉了下可以用最短路来做,但是建图方面比较纠结,初步自己的想法就是原创 2012-10-09 21:47:53 · 765 阅读 · 1 评论 -
hdu 2474 Process scheduling
这道题就是模拟银行家算法,但是因为数据量非常大,所以直接遍历的做法最差复杂度会达到n*n*m,而且数据比较卡你这点,所以这道题的暴力做法可以采用,按照需求从小到大总和先贪心的拍一下序,之后可以用链表来实现删除的过程,这样可以过,时间还是比较慢. 还有一种做法就是直接从后面开始遍历,估计出数据的人也没想到,非常快... 仔细想一想,为什么这道题这么费时,主要的时间就是用在了一遍一原创 2012-10-07 21:19:27 · 691 阅读 · 1 评论 -
hdu 3585 maximum shortest distance 二分小技巧
这道题是学习了最大团过程中遇到的一道题目,最大团学习中的体会就是搜索的基本功还是不扎实,最大团是一个NP完全问题(不懂装懂了),现在还没多项式算法,只能靠启发式搜索或者是回溯来实现了。回溯法也可以通过各种剪枝来优化。 回到这道题目,意思就是给定平面上一些点,求出K个点满足其实每个点的距离都大于M,求M. 通过不断的二分距离,如果距离大于二分出来的距离,那么就建边,求出最大团,就原创 2012-09-16 11:07:47 · 654 阅读 · 1 评论 -
求上下界 差值 最小 一类问题 hdu1598 && poj3189
最开始的时候做过hdu1598,题意就是问一些点对,求一个差值最小构成的公路集合能连通这个点对,开始的时候没有具体想法,感觉上下界存在不确定性,后来就枚举上下界,通过并查集依次往里面加边,确定出此时最小的上界. 今天做到了poj3189,也是一样的原理,给定一堆顺序,要求出顺序最小的边集,能够满足匹配,不小心看到了风神题解上写的二分字样,二分是最大流里面很常见的一个技巧,利用最大流来判定原创 2012-10-05 22:07:50 · 527 阅读 · 1 评论 -
项目分配问题 poj 3469 uvalive 3780
项目分配问题 poj 3469 uvalive 3780 比赛的时候做到了uvalive3780,想了很久很久还是不知道怎么建图,赛后问了一下风神,叫什么项目分配问题,感觉真是博大精深. Poj3469的题意就是有一些任务,每个任务可以在两个cpu上分别运行,代价是ai,bi,但是对于一些,指定的任务对,他们之间存在数据交换,如果在不同的cpu上运行,需要一定的代价,问如何分配原创 2012-09-12 20:41:22 · 1012 阅读 · 1 评论 -
2-sat 入门
2-sat 入门 2-sat算法比较固定套路,题目也不是很多.论文方面的话可以参考对称性解决2-sat的ppt,赵爽的2-SAT解法浅析论文. 什么是2-sat问题呢,抽象来说就是存在一些组选择,每组选择有两个,需要选出一个,他们之间的某些不能共存,是否能选出符合条件的一组解. 这个算法的关键就在于对称性,如果a和b不能共存,则意味着选择了a之后必须选择~b,选择b之原创 2012-09-13 13:04:48 · 512 阅读 · 1 评论 -
hdu 3251 Being a Hero
这道题目是一道最小割,弱弱的建图还是想了很久,其实建图很简单,只需要把可以取到的点连到一个超级汇点上,容量是那个城市的价值,这样求完最小割就可以保证从源点到汇点无通路,一种情况是,城市选取,道路被隔断,还有一种情况是城市被割掉了。这道题还要去求出任意一个割集。 之前虽然网络流学了一段时间,发现对算法原理上的东西理解还是太不透彻,刚开始自己的做法就是,因为在最大流跑完之后,原来加入的那些道原创 2012-08-22 10:49:46 · 929 阅读 · 1 评论 -
hdu3395 -- 二分图带权匹配
题意比较好懂,把每个鱼拆成两个点,就形成了一张二分图,每条边有一个特定的权值,我们就需要找出一个边集使得边权和达到最大。 思路:刚开始的时候是最大费用最大流,直接利用二分图匹配的特性,即每个X集里的点和Y集里的点只能覆盖一次,而每条边匹配一次,就加上一个源点s连接所有X集顶点,容量1,费用0,所有Y集顶点连接汇点t,容量1,费用0,这样就可以很好的保持,满足二分匹配的特性。然后提交WA,原创 2012-08-17 01:59:20 · 1281 阅读 · 2 评论