摘要:
题意 分析 预处理出每个数的最小素因子,首先可以知道$minprime(x minprime(x))=minprime(x)$,我们用线段树维护区间最大值$mx[p]$,注意这里的最大值并不是实际的最大值,同时维护区间$a[i]$乘$minprime(a[i])$的次数的最小值$mnt[p]$ 对于 阅读全文
摘要:
题意 求$N$位数字序列(可以有前导0)中不出现某$M$位子串的个数,模$K$。 $N define fi first define se second define pb push_back define ll long long using namespace std; const int in 阅读全文
摘要:
题意 给你一个字符串,让你求一个$num$数组,$num[i]$为长度为$i$的前缀的公共前后缀长度不超过$\lfloor \frac{i}{2}\rfloor$的个数, 例如"$aaaaa$",$num[1]=0,num[2]=num[3]=1,num[4]=num[5]=2.$ 分析 设数组$d 阅读全文
摘要:
题意 给一个$n\times n$的螺旋矩阵,给出其中的$m$个点的值分别为各个点上数字的数位之和,给出$q$个询问,每次询问从$(x1,y1)$到$(x2,y2)$的子矩阵的和。 分析 用官方题解的方法$O(1)$推出点$(x,y)$上的值,将这$m$个点按$x$排序后依次按$y$建主席树,查询时 阅读全文
摘要:
题意 给一个$n$的全排列数组$a$,求一个递推数组每一项的值:$ans[i]=ans[j]+1$,$j$为$a[pos[i] k]到a[pos[i]+k],(pos[i]为i在数组a中的下标)$中小于$i$的最大的值。 分析 这题set的做法更优秀,但是想练习一下在主席树上二分。 按权值建主席树, 阅读全文
摘要:
题意 给一个$n\times n$的矩阵,找一个最大的子矩阵使其中最大值与最小值的差小于等于$m$。 分析 枚举子矩阵的上下边界,同时记录每一列的最大值和最小值。 然后枚举右边界,同时用两个单调队列分别维护最大值和最小值,考虑当右边界往右移动时,可行的最远的左边界一定是单调不减的,当枚举到第$i$列 阅读全文
摘要:
题意 给出n个点,每个点有a,b两个属性,让你从左下角到右上角划一条线,线的左边每个点的贡献是$a_i$,线的右边每个点的贡献是$b_i$,使得两部分的总和最大。 分析 找一条折线将点分割开,使总和最大。 把y离散化,然后点按x排序,设$dp[i]$为经过第$i$个点(该点当作B集合中的点)的折线的 阅读全文
摘要:
题意 给n个整数,求满足子集异或和为0的子集大小之和。 分析 将问题转化为求每个元素的贡献次数之和。 先对n个数求线性基,设线性基大小为r,即插入线性基的数字个数为r,可以分别计算线性基内数的贡献和线性基外的数的贡献 线性基外:共n r个数,枚举每个数x,它可以和将线性基外剩余的n r 1个数同时存 阅读全文
摘要:
题意 给一个$n\times m$的01矩阵,1代表有墙,否则没有,每一步可以从$b[i][j]$走到$b[i+1][j]$,$b[i][j 1]$,$b[i][j+1]$,有两种询问: $q=1$,将$b[x][y]$的状态反转 $q=2$,计算从$b[1][x]$走到$b[n][y]$的方案数 阅读全文
摘要:
题意 给一个n个结点的带点权的图,找到第k小的团的权值 分析 用bitset表示团的状态,一个结点必须和团里的每个结点都连边才能加进去,所以可以直接用$\&$运算来判断一个结点是否能加进去后还形成团,用优先队列来维护前k小的团的权值。 Code c++ include define fi first 阅读全文