![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 94
Wkchi
这个作者很懒,什么都没留下…
展开
-
Codeforces 242E- XOR on Segment(线段树)
题目链接:CF 242E 题目大意: 长度为n的数列,对区间[l,r]有两种操作: 1对区间求和并输出 2对区间异或x 分析: 如果线段树只维护区间合,显然不能直接进行异或. 于是就考虑二进制拆位,主要的思路就是将一个数,拆成若干个二进制位,然后对于异或操作,就转换成了每一位上的异或操作. 每一次异或, 对于给定的x, 如果x的第i位是1, 那么就将给定...原创 2019-03-29 14:03:12 · 111 阅读 · 0 评论 -
HDU5381 莫队 gcd 预处理
题目链接:HDU 5381 题意:给出N个数,M个询问,对于每个询问,有一组[L,R],输出这个区间内所有子区间的GCD和。 思路:看完题目不难想到莫队,本来转移的时候想着可以rmq套个二分,然而超时了… 看了下别人题解才发现可以先预处理. 至于为什么可以这样预处理.我们发现 gcdgcdgcd 发生变化的话其值至少除2,因此种类顶多就 lognlog nlogn 种,预处理时间复杂度也就 O(n...原创 2019-07-03 13:07:23 · 119 阅读 · 0 评论 -
P3396 哈希冲突
题目链接:点我 题目大意: 第 value[k] 会被存进**(k%p**)这个池原创 2019-06-09 20:33:43 · 125 阅读 · 0 评论 -
P3203 [HNOI2010]弹飞绵羊
题目链接:点我 题目大意:有n个装置,每个装置设定初始弹力系数ki,当达到第i个装置时,会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则被弹飞。求从第i个装置起步时,被弹几次后会被弹飞。带修改操作,下标0开始 分析: 开始打算倒着跑一遍记录每个位置弹飞要多少次,但是发现这样做修改操作复杂度爆炸. 为了减少修改复杂度我们可以用分块的思想,将其分成n\sqrt nn块,修改时只要对...原创 2019-06-12 15:38:56 · 89 阅读 · 0 评论 -
CSU - 2170 千万别用树套树 (线段树)
题目链接:CSU 2170 题目大意:对[1,n]的区间进行q次操作.有下面2种类型 1:添加一条[l,r]的线段 2:查询可以完全覆盖[l,r]区间的线段有多少条 需要注意的是查询区间 r-l<=2 分析: 这么一个水题之前和队友想了一天都没想出来.今天又看了这道题,才发现还有个查询区间r-l<=2的条件. emmm,没漏看条件的话这题还是很好写的.维护...原创 2019-04-03 18:17:12 · 517 阅读 · 2 评论 -
HDU 3450(树状数组)
题目链接:HDU 3450 题目大意: 求长度大于等于且相邻差值不超过d的子序列的个数. 分析: 没什么好说的水题,就是没给a的范围真的天坑. 以下是代码: #include <set> #include <map> #include <stack> #include <queue> #include <vect...原创 2019-04-02 20:58:27 · 180 阅读 · 0 评论 -
HDU 1541(树状数组)
题目链接:HDU 1541 题目大意:求二维偏序.给n个星星,每个星星按y坐标从小到大,y一样x从小到大输入,然后每个星星的做下区域每包含一个星星(不包括自己),该星星就升一级.最后求等级0~n-1的星星的个数。 分析:可以排序降维(不过这题已经按y排好了),然后用树状数组求逆序对的方法就好了. 另本题需注意以下2点 x和y的值可以是0 多组输入 #include &...原创 2019-04-02 20:25:53 · 180 阅读 · 0 评论 -
HDU 2688 Rotate(树状数组)
题目链接:HDU 2688 题目大意:题目大意:给你一个n个数的全排列,求这n个数的正序数(序号比前面大,值也比前面大),然后给出个区间,这个区间顺时针循环转一次(半夜写题看成对称反转了 orz )。比如,输入R 1 3,下标(从0开始)为1到3的数顺时针循环一次,即(2 3 4 变成3 4 2)其余不动,所以1 2 3 4 5变成 1 3 4 2 5.当输入Q时,输出当前排列的正序数。 题目...原创 2019-04-02 05:09:40 · 156 阅读 · 0 评论 -
Longest Subarray [hdu 6602]
题意: 给你nnn元素,元素的范围是[1,c][1,c][1,c],求一段区间使得这个区间内出现所有元素数量>=k>=k>=k,问你这个区间最长是多少. 解法:首先枚举右端点,我们假设枚举到当前的右端点为rrr,rrr位置所在元素的值为ppp,和ppp值相同的元素上一次出现的的位置为lll.我们先把[l+1,r][l+1,r][l+1,r]这段区间标记下,意味着不...原创 2019-07-25 16:02:06 · 228 阅读 · 2 评论