二分
WePlayDirty
emmmmmmm
展开
-
(多校第一场1004)HDU5726 GCD(区间GCD查询+)
题意:给出n个数,区间为(1,n),查询区间(l,r)的GCD,以及区间(1, n)有多少子区间的GCD等于区间(l,r)的GCD。 做法:使用线段树,或RMQ维护区间GCD,并且要预处理出所有可能出现的GCD值 的区间数量。针对固定左端点,一直向右GCD阶梯状减小的特性,大概有两种做法。 1)对于某一固定起点(以选定左端点L=i为例),从最右端R开始,二分枚举GCD突变位置pos,这一段阶梯的长度就是R-pos+1,定义INTERGCD(L,R)=区间(L,R)的GCD,则GCD值等于 INTERGC原创 2016-07-21 22:02:04 · 4230 阅读 · 0 评论 -
poj2892&&HDU1540 Tunnel Warfare(线段树)
poj都给hint,D x摧毁x,R恢复最近摧毁的点,Q x查看和x相连的点的个数(未摧毁)。 做法: 1)训练计划上把这题分到静态二叉检索树上,所以先想到用线段树做,线段树维护每段中被消除点的最大位置和最小位置,摧毁点k就把k添加到位置k,查询k,就查询段[1,k]的中的最大值和[k,n]的最小值,然后相减得到结果。初始化时最大值为0,最小值为n+1,这样在区间如果没有被摧毁的点也能返回正确原创 2016-08-10 14:12:12 · 2258 阅读 · 0 评论