随笔分类 -  POJ

POJ 1417 True Liars
摘要:解题思路:并查集+dp分析易知:如果答案为"no",则xi,yi属于两种不同类型(1),否则为同一类型(0)a)并查集的思想类似于POJ 1733 Parity Game relation[i]表示节点i与根节点关系b)此时,我们将所有人分成了几个(s)不同的集合,每个集合分为两类:与根节点同类的,与根节点不同类的。c)题目转化为求解是否存在唯一解:取每个集合中的一种类型(必须且仅取一种),累计人数为p1  题目转化为动态规划问题,dp[i][j]表示节点i(包括i)之前,人数不超过j的最大人数  node[i].s表示与该节点同类型的节点个数,node[i].d表示与该节点类型不同的节点个数 阅读全文

posted @ 2010-12-07 20:35 ltang 阅读(1036) 评论(1) 推荐(0)

POJ 1733 Parity game
摘要:解题思路:hash离散化+并查集首先我们不考虑离散化:s[x]表示(root[x],x]区间1的个数的奇偶性,0-偶数,1-奇数每个输入区间[a,b],首先判断a-1与b的根节点是否相同a)如果相同表示(a-1,b]之间1的个数奇偶性已知s((a-1,b])=s[a-1]^s[b],此时只需简单判断即可b)如果不同,我们需要合并两个子树,我们将root较大的子树(例root[a])合并到root较小的子树(例root[b]),且此时s[root[a]]=s[a]^s[b]^s((a-1,b])在路径压缩的过程中s[i]=s[i]^s[root[i]],s[root[i]]为(root[root 阅读全文

posted @ 2010-12-07 12:46 ltang 阅读(1928) 评论(0) 推荐(0)

POJ 1456 Supermarket
摘要:解题思路:贪心+并查集优化欢迎review 阅读全文

posted @ 2010-12-06 22:24 ltang 阅读(444) 评论(0) 推荐(0)

POJ 3349 Snowflake Snow Snowflakes
摘要:解题思路:hash完整C++代码 阅读全文

posted @ 2010-12-03 10:47 ltang 阅读(385) 评论(0) 推荐(0)

POJ1182 食物链
摘要:并查集,relation数组保存当前节点与根节点的关系,0表示当前节点与根节点同类,1当前节点吃根节点,2根节点吃当前节点,关系推导公式可见poj discuss,不过由于节点合并方式不一样,所以推导函数有细微的差别。代码 阅读全文

posted @ 2010-12-02 12:39 ltang 阅读(377) 评论(0) 推荐(0)

POJ 2299 Ultra-QuickSort
摘要:计算逆序个数,方法参照《算法设计》(美)克林伯格,5.3节代码 阅读全文

posted @ 2010-12-01 20:17 ltang 阅读(188) 评论(0) 推荐(0)

POJ 1936 All in All
摘要:水题,我A水题我快乐,哈哈,不过两次提交的时间分别是16ms和0ms,晕了[代码] 阅读全文

posted @ 2010-11-30 20:46 ltang 阅读(157) 评论(0) 推荐(0)

POJ 1743 Musical Theme
摘要:解题思路:将原数组每一位减去前一位得到新的数组B,题目转化为求解不小于3的不重叠最长重复字串代码 阅读全文

posted @ 2010-11-30 13:36 ltang 阅读(616) 评论(1) 推荐(0)

POJ 3080 Blue Jeans
摘要:解题思路:将所有串链接在一起,中间用不同的分隔符分割,求解后缀数组Height,二分求解连续长度>=k的公共子串是否包含了所有情况。代码 阅读全文

posted @ 2010-11-30 09:42 ltang 阅读(537) 评论(0) 推荐(0)

POJ 3693 Maximum repetition substring
摘要:解题思路:穷举长度为1到n/2的子串(L),如果子串连续出现两次以上,则两个连续的字串必定经过r[0],r[L],r[L*2]...中相邻的两个,所以在r[L*i]和r[L*(i+1)]分别往前和往后匹配。代码 阅读全文

posted @ 2010-11-29 22:46 ltang 阅读(1411) 评论(0) 推荐(0)

POJ 1625 Censored!
摘要:解题思路:  建立trie图,我们可以假设起点均为root节点,题目转化为求解root经过m步到达所有节点的总和  dp求解,如果存在i->j的路径,counter[m, j] += counter[m-1, i];初始条件为counter[0, root] = 1;  显然,还需要使用高精度代码如下:代码 阅读全文

posted @ 2010-11-25 13:45 ltang 阅读(1040) 评论(3) 推荐(0)

POJ 1204 Word Puzzles
摘要:解题思路:建立输入单词(反向,便于寻找起始点所在的位置)的AC图,然后按照八个方向依次寻找(注意方向也为方向)。例如A是向上方向,我们需要改为反向,向下。那么我们需要将每列--从上到下方向--组成的字符串--共width个--分别到AC图中查找匹配。关键代码已经注释[代码] 阅读全文

posted @ 2010-11-24 20:19 ltang 阅读(895) 评论(0) 推荐(0)

(转载)计算几何 浮点数
摘要:~~转载~~计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模板一般就不成问题了。精度问题则不好说,有时候一个精度问题就可能成为一道题的瓶颈,简直“画龙点睛”。这些年的题目基本是朝着越来越不卡精度的方向发展了,但是也不乏一些%^&%题#$%$^,另外有些常识不管题目卡不卡,都是应该知道的。今天我就开膛回顾下见过且还有印象的精度问题,由于本人见... 阅读全文

posted @ 2010-11-23 09:31 ltang 阅读(661) 评论(0) 推荐(0)

POJ 1035 Spell checker
摘要:解题思路:trie树+排序,理论上效率应该不错,不过可能由于new过于平凡,效率不是很高,还不如长度排序之后直接搜索完整代码如下:代码 阅读全文

posted @ 2010-11-19 17:08 ltang 阅读(339) 评论(0) 推荐(0)

POJ 3436 ACM Computer Factory
摘要:解题思路: 首先添加两个超级节点S,E,分别表示起点和结点  如果某个节点(i)不存在输入为1的条件,则添加一条S->i路径,容量为Qi;  如果某个节点(j)输出全为1,则添加一条j->E路径,容量为Qj;  如果节点i的输出与j的输入不存在冲突(输出与输入对应位置的和不能为1),则添加一条i->j的路径,容量为min(Qi, Qj).代码实现:代码 阅读全文

posted @ 2010-11-18 22:23 ltang 阅读(217) 评论(0) 推荐(0)

POJ 1459 Power Network
摘要:解题思路:首先添加两个节点,分别为起始点S,终点T,如果节点为power station,则添加一条S到当前节点的路径(路径容量为该节点的生产能力);如果节点为consumer,则添加当前节点到T的一条路径(路径容量为该节点的消费能力),则问题转化为求解S到T的最大流问题。代码如下:[代码] 阅读全文

posted @ 2010-11-17 10:15 ltang 阅读(257) 评论(0) 推荐(0)

POJ 3020 Antenna Placement
摘要:解题思路:求解最大独立集,转而求解最小顶点覆盖->最大流问题[代码] 阅读全文

posted @ 2010-11-10 12:34 ltang 阅读(184) 评论(0) 推荐(0)

POJ 3041 Asteroids
摘要:解题思路:将行列分别对应二部图的两个set(行,列)->(left, right),问题转化为最小顶点覆盖问题,进而转化为求解最大流问题[代码] 阅读全文

posted @ 2010-11-09 23:43 ltang 阅读(175) 评论(1) 推荐(0)

POj 1094 Sorting it All Out
摘要:解题思路:每增加一个点,均判断其拓扑排序,如果首先发现可以排序的情况,则不管后面的输入情况是否出现环。[代码] 阅读全文

posted @ 2010-11-08 20:57 ltang 阅读(332) 评论(0) 推荐(0)

POJ 3026 Brog Maze
摘要:解题思路:BFS 找出所有点之间的最短距离,Prim求解最小生成树[代码] 阅读全文

posted @ 2010-11-08 09:35 ltang 阅读(297) 评论(0) 推荐(0)

导航