02 2013 档案
摘要:把一个长为len的字符串围成一个圈,然后以任意一个字符作为起点,都会产生一个新的长为len的字符串,字符串的最小表示就是所有新字符串中字典序最小的那个。 下面这个函数就是解决这个问题的,返回值为字典序最小的串的在原串中的起始位置。 int MinimumRepresentation(char *s,
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1828题目大意: 给你多个矩形,求他们合并和的周长,被覆盖的边不能算进周长之内。解题思路: 其实周长并和面积并没什么很大的区别,只不过周长并增加了判断左右端点是否被覆盖的标记 lbd 和rbd 数组, 以及numseg 数组 记录连续区间段数。 numseg : 一根扫描线扫描过去,会记录有多少个连续的区间段,每个连续的区间段都有两条相等的竖边,而每次扫描过去竖边长度都相等。 参考文献 :陈宏《数据结构的选择与算法效率》View Code 1 #include <iostream> 2
阅读全文
摘要:题目链接:http://poj.org/problem?id=1151题目大意: 给你n个矩形,求他们的总面积之和。解题思路: 这是我写的线段树扫描线第一题,搜狗了一下,说实话网上的解释都很抽象,昨晚用手机百度一下看到了一张让人一看就有灵感的扫描线图,今天找了很久都没找到那张图了,本来还想copy一下给大家分享来着。 哈哈,不过大家别急,为了方便描述,自己动手画了几个。 四条红线为矩形的上下底边,这里我们称之为扫描线(实际编程中不存在,只是一个概念)。 如图所示,要求两个矩形的面积并,可以把矩形分成几个小矩形,最后的面积总和为它们的和。 对于每个小矩形其 面积S=长*宽。宽就是两...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1703题目大意:给定m个操作:D x y:x罪犯和y罪犯不在一个团伙。(总共只有两个团伙)A x y:询问x和y罪犯的关系解题思路: 很容易想到是并查集,但最后还是让我纠结了良久。一直MLE。 对于每次的D x y操作,每次不仅要找到两个不同集合标志头进行更新,还要更新a数组,即存储的相对集合的标志头。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #includ
阅读全文