码迷,mamicode.com
首页 > 其他好文 > 详细

莫队 Codeforces Round #340 (Div. 2) E

时间:2017-03-10 10:42:51      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:number   i+1   keyword   code   ++   href   blank   删除   log   

题目大意:给你一个长度为n的序列,有m个询问,每次询问一个区间[L,R],表示这个区间内,有多少的a[i]^a[i+1].....^a[j]=k。

 

思路:莫队去搞就好了

我们定义pre[i]=a[1]^a[2]^....a[i],然后我们再去更新就好了,这里,我们定义区间[L,R]表示我们所要询问的区间即可。然后这里会有一个疑惑,就是为什么while(l<Q[i].l) { Delete(l-1); l++; }和while(l>Q[i].l) { l--; Updata(l-1); }是这样子呢,这样子的话L和R的区间岂不是少删除了一个区间吗——但是其实不是这样的,因为我们要就比如说目前我们要求[3,5]这个区间,我们要保留pre[2]这个区间,这样的话,才能保证pre[i]^pre[2]才是我们所需要的区间

 

具体代码看卿学姐的吧:链接

 

莫队 Codeforces Round #340 (Div. 2) E

标签:number   i+1   keyword   code   ++   href   blank   删除   log   

原文地址:http://www.cnblogs.com/heimao5027/p/6529332.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!