摘要: 分块训练 两个tag,优先算乘法的tag。 暴力更新的时候要把乘法标记和加法标记都清空。 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) using namespace std; typedef long 阅读全文
posted @ 2019-05-16 21:39 清楚少女ひなこ 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 分块训练 每块里面方一个vector,查询的时候找到是第几块的第几个。。 插入的话,先查询,然后在块内暴力插入。 为了防止多次在同一块插入而劣化复杂度,所以每sqrt(n)次就重新分块。。 阅读全文
posted @ 2019-05-16 20:32 清楚少女ひなこ 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 分块训练 参考hzwer的做法,每个数在经过数次向下取整的开方后都会变成0或1。 我们在维护块内信息的时候,可以将整块全是0或1的块跳过,减少复杂度。 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) usi 阅读全文
posted @ 2019-05-16 19:40 清楚少女ひなこ 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 分块训练 分好块维护一个sum数组,中间区间只更新加标记,两边暴力更新即可。 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) using namespace std; typedef long long l 阅读全文
posted @ 2019-05-16 17:02 清楚少女ひなこ 阅读(167) 评论(0) 推荐(0) 编辑