一点一点的进步

[Usaco2010 Mar]balloc 农场分配

Farmer John最近新建立了一个农场,并且正在接受奶牛的畜栏分配请求,有些 畜栏会看到农场美妙的风景。:) 农场由N (1 (1 这样的话奶牛可以在这段牛棚里面转悠。(当然,这段畜栏必须要有足够的空间) 给出M (1 具体做法就是 对请求,按照r关键字递增排序,然后r相同...

2013-10-24 21:53:43

阅读数:1625

评论数:0

[Usaco2008 Nov]lites 开关灯 线段树 区间异或及求和操作

Farmer John尝试通过和奶牛们玩益智玩具来保持他的奶牛们思维敏捷. 其中一个大型玩具是 牛栏中的灯. N (2 <= N <= 100,000) 头奶牛中的每一头被连续的编号为1..N, 站在一个 彩色的灯下面.刚到傍晚的时候, 所有的灯都是关闭的. 奶牛们通过N个按钮来控制灯...

2012-11-29 22:33:15

阅读数:2656

评论数:2

HDU 4419 矩形面积并

这题貌似想法挺简单的。 跟普通的矩形并变形一下 把三种颜色分别对应一个二进制位,那么用十进制数表示 R, G, B, RG, RB, GB, RGB 就是 1,2,4,3,5,6,7 然后在pushup操作中把这些东西更新一下就行了 注意,普通矩形并是一条线段表示进入矩形,另一条表示出了...

2012-09-24 01:40:31

阅读数:990

评论数:0

HDU 4125 2011福州现场赛E题 KMP+笛卡尔树

题意就不描述了。 主要说一下我的构造第一个串的过程 对给出的序列,比如5 1 3 2 7 8 4 6  给每个数按输入的顺序对应一个编号 5  1  3  2  7  8  4  6 1  2  3  4  5  6  7  8 然后我们手动建这颗二叉搜索树。观察它,...

2012-09-12 11:42:44

阅读数:3544

评论数:0

POJ 3642 长方体体积并 线段树 扫描线

这题就是给出了好多个长方体, 求出那些被覆盖了 3次及以上的体积 我们注意到z的范围很小,而且就给了1000个长方体 那么可以把z坐标离散化 然后在相邻的z坐标空间内,就变成了求面积覆盖 记录三个变量,代表一次覆盖,两次覆盖,三次覆盖及以上 #include #include ...

2012-08-29 14:24:20

阅读数:1070

评论数:0

HDU 4366 树转化为连续序列 线段树

这题跟 http://poj.org/problem?id=3321 这题的转化形式基本一样 本题给的是一棵树。 然后找子孙中能力值大于父节点并且忠诚最高的。 由于树的结构不好搞线段树,所以要映射到一个连续序列上搞,把这个结点的子树都能映射到一个连续区间上就好办了。 很常见的套路就是DFS时...

2012-08-15 00:52:54

阅读数:981

评论数:0

POJ 4047 Garden 线段树

这题只要想出怎么建树就简单了吧。 他问的是连续k个值最大的是多少 就可以用1~k之和,2~k+1之和,3~k+2之和.......做为结点。 然后就发现,变成了简单的区间更新和区间查询问题了。 #include #include #include #include #include...

2012-08-14 02:22:38

阅读数:1050

评论数:0

HDU 4351 Digital root 线段树 区间合并

看了解题报告后说有一种离线不用线段树的做法,表示不解 只会用线段树做 因为题目中所查询的区间,是所有的子区间的结果的并。所以区间合并就很必要了。 每个结点,记录这个区间的和的数根, 记录本区间内从左端点为端点往右的连续区间出现的数根,从右端点为端点往左的连续区间出现的数根,以及整个区间能出现...

2012-08-10 03:09:30

阅读数:1078

评论数:0

UESTC 1712 Easy Problem With Numbers 线段树+扩展欧几里得求逆元

这题是今年四川省赛的E题, 如果懂逆元的话很容易想到做法,不懂的话就像我似的 沙茶了。 四处求许久,求得神牛代码一份,思路一份,写了许久后最终得以A掉此题。 题意就不再说了,如果你知道product是乘积的意思的话这题就不难理解 附上神牛原版思路: 如果这个题只有乘法,那么你肯...

2012-07-16 01:45:20

阅读数:1801

评论数:1

HDU 1823 二维线段树

题意就不赘述了。 二维线段树,第一维是高度,第二维是活泼值, 然后建立树套树。 /* ID: CUGB-wwj PROG: LANG: C++ */ #include #include #include #include #include #include #inc...

2012-04-13 20:33:30

阅读数:1046

评论数:0

HDU 3607 线段树+DP

这题最裸的方法因该是O(n2)的。dp[i]=max(dp[j])+gi(1hj) 其中dp[i]代表的是前i下能拿的最多的钱。 但这个数据范围有点大,是10W 之多。 在hi > hj这个限制下,我们可以联想到,不就是找比hi小的高度中能获得的最多的钱的那个状态么,再由数据范围,容易联想到...

2012-04-13 10:31:17

阅读数:708

评论数:0

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

阅读数:638

评论数:0

POJ 1177 Picture 矩形周长并

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

2012-03-24 21:51:26

阅读数:854

评论数:0

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

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

2012-03-22 20:15:02

阅读数:1245

评论数:0

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

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

2012-03-22 16:11:21

阅读数:2170

评论数:0

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

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

2012-03-20 13:05:26

阅读数:665

评论数:0

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

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

2012-03-14 22:03:34

阅读数:1114

评论数:0

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

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

2012-03-14 15:44:15

阅读数:1413

评论数:0

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

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

2012-03-07 16:54:46

阅读数:1108

评论数:2

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

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

2012-03-06 18:18:07

阅读数:745

评论数:0

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