HDU
文章平均质量分 76
Prairial_0
这个作者很懒,什么都没留下…
展开
-
HDU 2553 N皇后问题 - dancing links
打表是最快的做法。退而求其次,直接搜就行了,注意下减枝即可。用DLX纯粹是为了套模板。 皇后问题的行列约束很容易转化成01矩阵的列,但对角约束却比较麻烦,因为可能不必完全满足:比如5*5的棋盘,有5行5列,这些要全部不重不漏的满足,但正对角线却有9条,而且只要不重就行了。反对角线亦然。 所以在每一步搜索的过程中,选择约束列的时候,只要选行约束的列和列约束的列就行了(第90行);结束的条件也由稀原创 2012-10-30 13:00:32 · 1012 阅读 · 0 评论 -
HDU 3635 Dragon Balls - 并查集
这个题我做了很长时间,主要是英语没学好。 T A B : All the dragon balls which are in the same city with A have been transported to the city the Bth ball in. You can assume that the two cities are different. 意思是把A球所在城市的原创 2012-10-30 13:16:49 · 417 阅读 · 0 评论 -
HDU 3047 Zjnu Stadium - 并查集
这个题本质上和3635是一样的,到不如说比那个还简单的多:只要记录每个观众相对于自己所在集合的标记元素的偏移,在压缩路径时注意偏移的累加即可。如果新规则的两个观众已经在同一个集合内(在同一集合表示他们之间有严格的顺序关系),则判断新规则是否和原来的规则兼容((off[a]+x)%300 == off[b]),不兼容则累计错误。 同样这道题我也浪费了很长时间,其一是误以为合并到同一集合的观众一定要原创 2012-10-30 22:32:26 · 378 阅读 · 0 评论 -
HDU 3038 How Many Answers Are Wrong - 并查集
坦白讲,这题如果不是放到并查集这一讲的话,我根本不会想到用的。 有前几题的经验,本题就非常简单了:find(t)表示t所在集合的左端点,sum[t]表示t到find(t)这一区间的区间和。为了方便,我统一使用了左闭右开区间,这样直接区间操作的时候直接减就行了。压缩路径的时候对sum进行处理。 当然由于find(t)是t的左端点,所以在合并的时候一定要注意标记元素要选择较小的一个。 至于出错就原创 2012-10-31 00:38:12 · 456 阅读 · 0 评论 -
HDU 3518 Boring counting - 后缀树
(其实这题我卡了一个月会乱说?) 基本就是参考之前的这篇文章。稍微多了点东西在里面。 另外,貌似我搜到的解题报告大都是用后缀数组的,不知道什么情况。 言归正传,建树的过程就不多说了,这里假设已经建立了目标字符串的后缀树。我们知道trie和后缀树是等价的,所以下文将不加区分的使用这两个概念。 如果想知道一个字符串中重复字串的个数,只需要把它的所有后缀插入到trie中(包括结束字符原创 2012-11-24 16:25:32 · 834 阅读 · 0 评论