分块大法
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
【2011集训队出题】Crash的数字表格
Description求 \sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\mod\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\mod原创 2016-03-18 20:38:34 · 974 阅读 · 0 评论 -
【JZOJ5260】【GDOI2018模拟8.12】区间第k小(分块)
DescriptionSolution首先这题离线的话是可以莫队套分块的,但是要求强制在线。那么我们只能考虑把莫队换成分块。 首先处理一个关于值域的块,然后求一个数组f[i,j,k]表示从下标第i块到第j块中满足在值域块是第k块,且这些数字出现次数小于等于w的有多少个,这个枚举两个端点,然后扫过去,用桶记录一下就好了。 然后再处理一个数组g[i,j]表示前i块中值为j的有多少个。 那么现在我们原创 2017-08-21 07:49:10 · 551 阅读 · 0 评论 -
带修改的莫队算法学习小记
简介莫涛大神创造出的离线询问算法的带修改版。 算法基础:需要掌握莫队算法,会打暴搜(暴力)。 一个叫莫的双端队列。 只支持单点修改操作方法普通的不带修改的莫队算法要把每个询问带上两个关键字排序,现在待修改的莫队算法要带上三个关键字排序。初始操作fo(i,1,m) { scanf("%s%d%d",s,&k,&l); if (s[0]=='Q')a[++tot].原创 2016-07-10 09:15:21 · 5711 阅读 · 4 评论 -
莫队算法学习小记
算法创始人莫涛大神。 莫涛队长的算法,%%%%%%%%%算法简介算法前提可以在O(1)O(1)的时间内把[l,r]的询问转移到[l-1,r],[l+1,r],[l,r-1],[l,r+1]的询问,而且不需要修改操作,那么就可以使用莫队算法([a,b]表示从a到b的区间,包含a和b)算法核心假如有一个询问[l,r]要转移到一个询问[l1,r1],那么需要的时间为O(|l1−l|+|r1−r|)O(|原创 2016-05-07 23:22:13 · 1522 阅读 · 2 评论 -
【NOI模拟】维护队列
Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N。为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少。当然,A有时候会依据个人喜好,替换队列中某个弹珠的颜色。但是A还没有学过编程,且觉得头脑风暴太浪费脑力了,所以向你来寻求帮助。Solution待修改的莫队算法,裸体! 待修改的莫队算法 有道原题【uva123原创 2016-07-09 21:01:33 · 913 阅读 · 0 评论 -
【NOIP模拟】快速荷叶叶变换
DescriptionSolution以前做过一道加强版的题目,叫做模积和。 所以第一题,秒切。Code#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;c原创 2016-09-04 12:27:59 · 628 阅读 · 0 评论 -
【NOIP模拟】旷野大计算
Description**Solution这是一道套路题,不过我现在才学会套路。 对于莫队算法,进队统计答案很快,出队统计答案很慢的情况有一个套路:把所有的出队变成进队,每次询问的[l,r],把l放到l所在的块的末尾为l’,然后把l到l’-1的都入队,更新答案,因为右端点是递增的,所以右边就逐个进队就好了,然后结束的时候就把l’到l-1退队。每次l换块的时候,就把所有的数据暴力重构。Code#in原创 2016-09-09 18:12:41 · 1767 阅读 · 0 评论 -
【GDSOI 2016】互补约数
DescriptionSolution看到对于gcd的求和就知道是关于莫比乌斯繁衍的题目。 先来看一看要求什么:所有数分解成两个相乘的数的gcd,那么我们可以直接枚举那些相乘的数。 所以 ans=∑i=1n∑j=1⌊ni⌋gcd(i,j)ans=\sum_{i=1}^n\sum_{j=1}^{\lfloor{n\over i}\rfloor}gcd(i,j) 和一般的莫比乌斯繁衍的长得很像,原创 2016-08-03 09:14:45 · 809 阅读 · 0 评论 -
【51Nod 1239】欧拉函数之和
Description对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler’s totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。 S(n) = Phi(1) + Phi(2) + …… Phi(n),给出n,求S(n),例如:n = 5,S(n) = 1 +原创 2016-07-08 22:11:22 · 1362 阅读 · 0 评论 -
【HNOI模拟】 K小数查询
DescriptionSolution用什么一眼看上去就像一个数据结构,但是好像很复杂。 看看能干什么先! 能支持区间找名次,支持修改。 不知道treap可不可以做,不过区间维护名词好像不行吧。 发现范围十分的小,分块大法好。怎么做对每一块排一个序,维护一个加号的标记就可以了。Code#include<iostream>#include<cstdio>#include<cstring>原创 2016-04-13 20:29:49 · 1037 阅读 · 0 评论 -
【WinterCamp 2013】模积和
Description给出n,m,求 ∑i=1n∑j=1,j≠im(nmodi)∗(mmodj)\sum_{i=1}^n\sum_{j=1,j\not =i}^m(n\mod i)*(m\mod j) 答案mod 19940417Solution转化看到题目,题意十分简洁,心里十分舒畅。 看到nin\over i就要想到ni=n−⌊ni⌋∗i{n\over i}={n-\lfloor{n\ov原创 2016-03-14 20:27:33 · 873 阅读 · 0 评论 -
【2010集训队出题】小Z的袜子
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬。 你的任务便是告诉小Z原创 2016-05-07 22:44:22 · 1670 阅读 · 2 评论