随笔分类 - 菜鸡刷题笔记-分块
摘要:链接: https://loj.ac/problem/6285 题意: 给出一个长为 的数列,以及 个操作,操作涉及询问区间的最小众数。 思路: vector维护每个值的出现位置, 预处理第i快到第j块 的众数,然后对不成块的跑暴力, 数组开小了一直wa..找题解,好多题解代码也过不了... 代码:
阅读全文
摘要:链接: https://loj.ac/problem/6284 题意: 给出一个长为 的数列,以及 个操作,操作涉及区间询问等于一个数 的元素,并将这个区间的所有元素改为 。 思路: 维护一个分块是否全部等于一个值,不等于时跑暴力即可. 查询一段时先把对应的分块更新再查询和更改. 代码: c++ i
阅读全文
摘要:链接: https://loj.ac/problem/6283 题意: 给出一个长为 的数列,以及 个操作,操作涉及区间乘法,区间加法,单点询问。 思路: 考虑整块的乘法, 同时对整块的add标记也要乘,对单点操作时, 注意要对整块暴力修改完再操作. 代码: c++ include include
阅读全文
摘要:链接: https://loj.ac/problem/6282 题意: 给出一个长为 的数列,以及 个操作,操作涉及单点插入,单点询问,数据随机生成。 思路: vector 维护每个区间, 当某个区间的值太多时,重构一下. 代码: c++ include include include includ
阅读全文
摘要:链接: https://loj.ac/problem/6281 题意: 给出一个长为 的数列 ,以及 n个操作,操作涉及区间开方,区间求和。 思路: 考虑开方5次之后就为1, 即考虑一整个区间的开方次数,对小于5次的区间暴力开方,否则就不管他. 代码: c++ include include inc
阅读全文
摘要:链接: https://loj.ac/problem/6280 题意: 给出一个长为n 的数列,以及 n个操作,操作涉及区间加法,区间求和。 思路: sum维护区间和, tag维护每个区间多加的,不是一整块的暴力加进去,算的时候加上tag即可. 代码: c++ include include inc
阅读全文
摘要:链接: https://loj.ac/problem/6279 题意: 给出一个长为 的数列,以及 个操作,操作涉及区间加法,询问区间内小于某个值 的前驱(比其小的最大元素)。 思路: 同样的分块加二分,只不过是更新值 代码: c++ include include include include
阅读全文
摘要:链接: https://loj.ac/problem/6278 题意: 给出一个长为 的数列,以及 个操作,操作涉及区间加法,询问区间内小于某个值 的元素个数。 思路: 分块,用vector维护每个区域的数值,每次通过二分去找满足的值. 每次单个修改时 代码: c++ include include
阅读全文
摘要:链接: https://loj.ac/problem/6277 题意: 给出一个长为 的数列,以及 个操作,操作涉及区间加法,单点查值。 思路: 线段树可以解决,用来学习分块. 分块概念就是,将序列分为sqrt(n)块,每次区间操作在满足一个快时操作块,最多sqrt(n)块, 处于边界时,直接对边界
阅读全文