摘要: 思路:转化成对于某一位置为最小值求向两边最远>=他的位置,用单调栈就能轻易完成。那么ans=(left+right)*h[i];维护单调递增还是递减呢?我们能很快反应到,一旦碰到一个比他小的元素,那么之前的那个比他大的就要结束了。ok,大致了解到碰到比他小的元素,那么比他大的呢?也简单呀,对于比... 阅读全文
posted @ 2017-02-19 22:52 see_you_later 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 思路: 单调栈。 鄙人的记忆:按当前为最大值的两边延伸就是维护单调递减栈。 //#include #include #include #include #include #include #include #include #include #include using namespace st... 阅读全文
posted @ 2017-02-19 22:49 see_you_later 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一系列数,对每个查询区间,计算有多少个子区间异或为k。 思路: 可以先预处理异或前缀,一个区间[L,R]的异或值=sum[R]^sum[L-1]; 如果当前区间是[a,b],加一个右端点b+1,那么这个b+1的贡献就是[a,b]区间内有多少个sum[x]=sum[b+1]^k 那么我... 阅读全文
posted @ 2017-02-19 19:49 see_you_later 阅读(167) 评论(0) 推荐(0) 编辑