一点一点的进步

POJ 3368 Frequent values 线段树

文字解释见 http://hi.baidu.com/lewutian/blog/item/d0e058ea85b780d8d539c9bf.html /* ID: sdj22251 PROG: subset LANG: C++ */ #include #include #includ...

2012-03-28 19:59:06

阅读数:631

评论数:0

POJ 1873 The Fortified Forest 凸包+枚举

题意:一个人有好多树,这些树有坐标,有价值,以及砍下这颗树能造多长的篱笆。 现在他要保护自己的树不被别人砍,就需要用篱笆把树围起来,但是需要从自己的树中砍下来几棵树造成篱笆,所以问题就来了,如何砍最少价值的树把剩余的树围起来。如果价值一样,就找砍树数量少的。 看到这道题的数据范围我就笑...

2012-03-27 09:39:56

阅读数:604

评论数:0

POJ 2409 Let it Bead polya 定理 和 置换

这道题应该是比较裸的一道题目了。 最开始做的时候完全想不到用什么gcd之类的东西。。。 然后直接模拟旋转和翻转的过程求置换群去了。 虽然结果是对的,不过是n2的算法,还好题目的数据很小。 先进的算法可以看http://blog.csdn.net/shiren_Bod/article/det...

2012-03-27 09:34:14

阅读数:703

评论数:0

POJ 1177 Picture 矩形周长并

题意很简单,但是周长并比面积并又稍微麻烦了一些 这时候要开一个numseg存储竖边的个数。 再开lbd,rbd分别表示边界,这样是为了帮助删除重合的边 /* ID: sdj22251 PROG: subset LANG: C++ */ #include #include #i...

2012-03-24 21:51:26

阅读数:846

评论数:0

POJ 1236 Network of Schools HDU 3836 Equivalent Sets 强连通分量+缩点 tarjan or kosaraju

1,POJ 1236 有一些学校连接到一个计算机网络,这些学校之间达成了一个协议:每个学校维护着一个学校列表,它向学校列表中的学校发布软件。注意,如果学校B在学校A的列表中,则A不一定在B的列表中。 任务A:计算为使得每个学校都能通过网络收到软件,至少需要准备多少份软件拷贝。 任务B:考虑一...

2012-03-23 22:25:32

阅读数:874

评论数:0

HDU 3333 Turing Tree 线段树 or 树状数组

给出一组序列,问某个区间内序列的和,跟普通求和不同的是,要求值相同的元素只能算一次。 首先看数据范围,就知道要离散化,不然没法标记某个数是否出现过。 然后要对要查询的区间进行排序,按右端点进行排序。 然后按顺序遍历点,如果该点的值以前出现过,就删掉以前的那个,然后插入该点,记录下这个值的位置...

2012-03-22 20:15:02

阅读数:1235

评论数:0

POJ 3145 HDU 3303 Harmony Forever 线段树 + 鸽巢定理

大意就是对一个集合,有两种操作,一个是将某个元素加入集合中,一个是问当前集合中mod y 最小的数,如果有多个,输出最近加入的那个元素,当然题目要求的是输出他们加入集合的时间是什么。 题目的数据范围一看就是线段树类型的。 然后对每个y,由鸽巢定理,y+1个数中必然存在mod y相同的数...

2012-03-22 16:11:21

阅读数:2141

评论数:0

HDU 1255 覆盖的面积 线段树 扫描线

还是先离散化坐标,然后用线段树扫描线 其中sum代表被覆盖过一次的长度,sum2代表被覆盖过2次及以上的长度。 然后注意pushup操作比较麻烦。 /* ID: sdj22251 PROG: subset LANG: C++ */ #include #include #include ...

2012-03-20 13:05:26

阅读数:655

评论数:0

POJ 2455 Secret Milking Machine 二分+最大流 ISAP + GAP优化

题目要求如下 一个无向图,有一些双向边。起点为1,目标点为n。要求必须有t条不同的路径。所谓的不同的路径,是一条边只能属于一个路径。 现在求所有路径的最大边 最小的长度是多少。 脑海中顿时闪过二分+最大流,找出模板秒之,因为还没到那种闭目写网络流的程度。 这次的模板是ISAP,我...

2012-03-19 18:24:01

阅读数:626

评论数:0

Codeforces Round #112 (Div. 2) E题 位运算

大意就是给出一个序列,对每个元素,看序列中是否存在另一个元素跟他按位与的值为0,然后输出这个元素 数列的长度很大,所以n2肯定挂掉。当时想到了对每个数,可能有400多万种情况,但是却没想到去预处理。 正解就是预处理了,对于一个二进制数,如果数位中的一些1变成0后,能够变成序列中的某个数,那么就...

2012-03-17 12:51:24

阅读数:943

评论数:0

HDU 3564 Another LIS 线段树+最长上升子序列

排队问题是线段树中很常见的题型。题目大意就是不断的向一个序列插入数据,插入的位置为当前序列的第某个位置,每次插入后都要求当前序列的最长上升子序列的长度。  /* ID: sdj22251 PROG: subset LANG: C++ */ #include #include ...

2012-03-14 22:03:34

阅读数:1107

评论数:0

POJ 2464 Brownie Points II 树状数组||线段树

这题不是一般的恶心人,简直就是个神题。 参考了一个大牛的思路写了个树状数组版本的,不推荐用线段树,但是练练线段树也不错。 http://hi.baidu.com/czyuan_acm/blog/item/af6fe8a9177f7ef51e17a2ea.html         这...

2012-03-14 15:44:15

阅读数:1404

评论数:0

COJ 1026 乘积最大 DP+高精度

这题用DP或者DFS均能过。 在COJ上看了ahyangyi大神的代码,手写了个bigint的结构体,遂模仿之,果然很好使 典型的DP问题 设w(h,q)表示从h位开始的q位数字组合所成的十进制数,m(i,j)表示前i位数字串插入j个乘号所得的最大乘积,初始值为: m(i,0) = ...

2012-03-08 17:36:53

阅读数:819

评论数:0

Codeforces Round #111 (Div. 2) E题 Buses and People 线段树+离散化

这题一看就是离散化加线段树,但是怎么建树确实没想出来。不过看到每个bus的时间点都不同,可能会有一点提示。 后来仿照一个神牛的代码写了一下 。 思路是这样的:首先,将bus和person的起止坐标一并取出到一个数组中,然后离散化之,对每个人每个bus都记录一下id,然后就是把这些坐标排序,去重...

2012-03-07 16:54:46

阅读数:1101

评论数:2

HDU 2871 Memory Control 线段树(区间合并)+二分查找+vector的常用方法

这道题给人的感觉就是恶心人。 刚开始完全不懂怎么找含有x的区间,后来看别人都说用vector,然后用之,发现很好用啊,支持插入和擦除操作,我原来竟然不知道还有这些功能. vector中的insert函数 iterator insert( iterator loc, const TYPE &a...

2012-03-06 18:18:07

阅读数:734

评论数:0

HDU 3397 Sequence operation 线段树(区间合并)

比较麻烦的一道题,各种操作 线段树中存储的信息有,覆盖标记,异或标记,0和1的从左到右连续长度,从右到左连续长度,区间最大连续长度 /* ID: sdj22251 PROG: subset LANG: C++ */ #include #include #include #in...

2012-03-06 11:47:29

阅读数:886

评论数:0

POJ 2892 hdu 1540 Tunnel Warfare 线段树 (区间合并)

这个题目的大意就是,求某个点所在的最长连续区间 区间合并此类题目的通常做法都是开3个变量,区间最大值,从左往右的连续区间长度,从右往左的连续区间长度。 然后更新的时候更新到点就行了。 查询的时候,只需要知道,某个点所在的连续区间,一定是由某个线段的左儿子的从右往左的连续区间和右儿子的从左往右...

2012-03-06 00:27:54

阅读数:865

评论数:0

POJ 2135 最小费用最大流

这道题的题意就是,一个无向图,一个人从起点出发,到终点后往回走,但是走过的路不想走第二遍,也就是说必须存在两个路径从起点到终点,且这两个路径中不能有相同的边。 那么建图就比较好想了,建立一个超级源点,一个超级汇点,因为是无向图么,所以源点到点1的流量为2,费用为0,点1到源点的流量为2,费用...

2012-03-05 14:27:47

阅读数:614

评论数:0

POJ 2110 Mountain Walking 二分+搜索

看到此题,第一反应是枚举差值,然后DFS,后来一想,二分也可以,而且速度加快很多,就果断二分之了 刚开始写的比较挫,直接用的差值在地图里搜,维护一个最大值,一个最小值,然后如果找不到路就回溯,这样果断TLE了。 后来一想,不用这么搞,回溯太费时间了,就对每个差值,枚举下界,然后在范围内的才能走...

2012-03-05 14:14:29

阅读数:1242

评论数:0

hdu 3308 LCIS 线段树 区间合并

好题一个,区间合并问题 大意就是问某个区间内最长连续上升序列的长度 跟POJ 3667 Hotel 差不多,貌似还更简单一些,因为只有单点更新 用到了lmx, rmx, mx,表示从左端点往右的连续长度,右端点往左的连续长度,区间内的最大连续长度 /* ID: sdj22251 PROG:...

2012-03-04 16:15:17

阅读数:884

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭