- 博客(2)
- 收藏
- 关注
原创 HDU 4343
题目大意:给定一些区间的左右端点,询问[L,R]内最多可以取出多少个不相交的区间(端点可重合,不可包含)。 解法:首先去掉那些覆盖其他区间的区间,因为取这些区间显然不优。去掉这些区间之后,按区间的左端点排序,则所有区间的右端点也有序。询问如果是[0,+oo),则第一个区间一定取,在判断第二个可否取,依次判断下。这样贪心显然对的,因为所有区间不会包含其他区间,左端点小的区间右端点也小,因此要尽可能
2014-04-02 10:37:16 699
原创 HDU 4358 分块
产生dfs序列之后,记录每个点对于的L[i]和R[i],每个点对应的子树就确定了。设计一种处理顺序,使得每个点的不被多次重复计算。 对L[i]进行分块,将问题分类,设每块大小为S。同时处理Id=L[i]/S相同的节点: (1)如果R[i]/S=id,则将该询问放到ask1中 (2)如果R[i]/S!=id,则将该询问放到ask2中。 对于ask1,直接暴力,处理每个问题。复杂度O(√N*√
2014-03-19 19:35:43 756
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人