随笔分类 - 数据结构 -- 线段树
摘要:题目大意:给你一个无序的1~n的排列a,每次询问[l,r]之间任取两个数得到的最大gcd是多少 先对所有询问离线,然后把问题挂在区间的左端点上(右端点也行) 在预处理完质数,再处理一个next数组,表示 i 的任意一个质因子,这样我们分解质因数的时间降低到而不是 因为能对答案产生贡献的都是成对出现的
阅读全文
摘要:题目大意:给你一个序列,让你对它重新排列,保证a[i]<=a[i/k],求字典序最大的排列 洛谷传送门 把i/k和i连边,发现形成了一个类似于小根堆的树形结构 先是一个错误的贪心:贪心每次选择前size[x]大个数依次填到树里 这种方法在有重复数字的时候会出锅,比如1112,如果用上面
阅读全文
摘要:题目大意:给你一个序列(n<=35000),最多分不大于m块(m<=50),求每个块内不同元素的数量之和的最大值 考试的时候第一眼建图,没建出来,第二眼贪心 ,被自己hack掉了,又随手写了个dp方程,感觉可以用splay维护,发现有区间操作并可取,又发现这个方程只能用线段树维护,然后只剩40min
阅读全文
摘要:题目大意:让你维护一个数x(x位数<=3*1e7),要支持加/减a*2^b,以及查询x的第i位在二进制下是0还是1 作为一道noi的题,非常考验写代码综合能力,敲+调+借鉴神犇的代码 3个多小时才过... 思路并不难,题目里b<=30n暗示压位,每次压30位可过 先分析一下加法,加a*2^b相当于在
阅读全文
摘要:依然是扫描线,只不过是求所有矩形覆盖之后形成的图形的周长。 容易发现,扫描线中的某一条横边对答案的贡献。 其实就是 加上/去掉这条边之前的答案 和 加上/去掉这条边之后的答案 之差的绝对值 然后横着竖着都做一遍就行了
阅读全文
摘要:扫描线裸题没什么好说的 注意空间不要开小了!!!
阅读全文

浙公网安备 33010602011771号