紫书 第七章 例题
Chen丶HC
这个作者很懒,什么都没留下…
展开
-
例题7-9 万圣节后的早晨(The Morning after Halloween, Japan 2007, UVa1601)
思路:同为bfs求解最少步数,问题在于状态如何更好地枚举。 无法开256^3的数组,利用题中2*2格中必有*的条件,改矩阵图为存边的图,点则变为144个,可存数组。#include #include #include #include #include #include #include #include #include #include #include #includ原创 2017-10-18 22:05:53 · 755 阅读 · 0 评论 -
例题7-8 倒水问题(Fill, UVa 10603)
1. 粗略估计状态数不超过40401,枚举所有状态,来搜索最接近的d。 2. 本题的目标是倒水量最少,定义从状态s到状态v的边权为vol,类似dijkstra做法。#include #include #include #include #include #include #include #include #include #include #include #includ原创 2017-10-15 09:52:31 · 514 阅读 · 0 评论 -
例题7-7 天平难题(Mobile Computing, ACM/ICPC Tokyo 2005, UVa1354)
思路:由于每种天平都对应着一种二叉树,所以枚举出所有的二叉树。 关键在于如何去枚举这些情况呢? 想了好久。。。还是实现不出来。。orz。。参考了lls的代码。。受益匪浅。。 1. 枚举子集:for (int left = (subset - 1)⊂ left; left = (left - 1)&subset) 2. 求补集:int right = left^subset原创 2017-10-10 21:56:46 · 549 阅读 · 0 评论 -
例题7-6 带宽(Bandwidth, UVa 140)
注意要先为出现的节点进行编号。而且还要按字典序而非出现顺序。 dfs枚举排列。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2017-09-30 11:00:04 · 401 阅读 · 0 评论 -
例题7-5 困难的串(Krypton Factor, UVa 129)
这题乍一看好像是子集生成诶。。 主要问题就在于没添加一个字符后判断是否有连续相同子串。。 由于对每个串而言,所有的前缀都是已经判断过无相同的。。所以只需要判断后缀即可。#include #include #include #include #include #include #include #include #include #include #include #inc原创 2017-09-28 19:06:11 · 285 阅读 · 0 评论 -
例题7-4 素数环(Prime Ring Problem, UVa 524)
很直白的枚举排列问题。。用回溯法减少枚举量。。water。。用vis数组来加速判断。。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2017-09-28 10:10:00 · 312 阅读 · 0 评论 -
例题7-3 分数拆分(Fractions Again?!, UVa 10976)
water...依旧是选择枚举变量来减少枚举量。。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #defi原创 2017-09-26 22:50:04 · 214 阅读 · 0 评论 -
例题7-2 最大乘积(Maximum Product, UVa 11059)
通过枚举左右区间来枚举连续子序列。。这数据,随便瞎搞。。。还是迷之wa了几发。。QAQ。。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2017-09-26 22:15:48 · 264 阅读 · 0 评论 -
例题7-1 除法(Division, UVa 725)
部分枚举对象可以求出来,由此来减少枚举量。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define C原创 2017-09-26 21:46:20 · 408 阅读 · 0 评论 -
例题7-13 快速幂计算(Power Calculus, ACM/ICPC Yokohama 2006, UVa1374)
选择适当的枚举策略,使得无需枚举整层树就能得到解。 这题选择了优先使用刚得到的数,且先加法后减法。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2017-10-21 15:25:45 · 303 阅读 · 0 评论 -
例题7-12 旋转游戏(The Rotation Game, Shanghai 2004, UVa1343)
如果用bfs进行状态空间搜索,分三次搜索,每次的状态数为C(24, 8) = 735471。 每次只存8个点的位置,并映射为一个16位的longlong,用set来判重。 状态搜索时,打一个表,对应24个坐标与8种移动的关系。 映射成longlong与解码的代价都不小,感觉不太行。 用IDA*来搜索,乐观估值函数定义为centre中最少的不同数的个数,每次最多修改一个。 对于这种状态数超原创 2017-10-21 11:57:16 · 237 阅读 · 0 评论 -
例题7-14 网格动物(Lattice Animals, ACM/ICPC NEERC 2004, UVa1602)
思路:主要是旋转,平移,翻转后的判重。 平移可以把坐标定义成相对某点的偏移量。 旋转则是坐标(x, y) -> (-y, x), 顺时针旋转90°。 翻转为(x, y) -> (x, -y), 关于x轴进行翻转。 先占坑,代码日后补上。原创 2017-10-29 11:15:58 · 375 阅读 · 0 评论 -
例题7-11 宝箱(Zombie's Treasure Chest, Shanghai 2011, UVa12325)
分类枚举#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define CLEAR(a, b) memset原创 2017-10-20 22:21:12 · 210 阅读 · 0 评论 -
例题7-10 编辑书稿(Editing a Book, UVa 11212)
1. 三种加速策略都得不到正解? 2. 枚举插入的方式值得学习。 3. 通过打表得出解#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2017-10-20 09:10:14 · 276 阅读 · 0 评论 -
例题7-15 破坏正方形(Square Destroyer, ACM/ICPC Taejon 2001, UVa1603)
占坑。。完全没有想法。。原创 2017-11-12 09:13:57 · 440 阅读 · 0 评论