A.老洪的遍历
将题中给出的贡献式转化,得到
(frac{B_iB_j}{2}(frac{1}{A_j}-frac{1}{A_i}))
发现将每个点扔到二维平面,坐标为((B_i,frac{B_i}{A_i}))
那么贡献就是(i),(j),原点(O)三点有向三角形的面积
所以求一个凸包就是答案了
B.老洪的神秘操作
首先一个很常用的套路是转化为等差数列,每次挑选两个位置,(+/-)相同的数值
然后发现先将(1,6),(2,5),(3,4)这样的数对配对一定不劣
剩下了一部分数,这些数显然能划分成7的倍数的组数越多越好
所以考虑一个dp, (dp[i][j][k][l])表示用了(i)个第一个剩下的数,(j)个第二个剩下的数,(k)个第三个剩下的数,此时无法划分成整组,剩下的一组值为(l)的最大划分组数
转移枚举当前这次用了第几种数就可以了, 第一维滚动
C.老洪的数组
考虑最裸的(20nm)暴力,发现可以分块
设块长为(k)
对于询问分块,每次到一个新块就暴力(20*n)去求出每个位置的答案, 这部分复杂度是(20*n*frac{m}{k})的
然后对于每次询问,暴力去扫当前块内对其有贡献的修改,这部分复杂度是(m*k)的
所以计算得(k)最优为(sqrt {20n})
此时复杂度为(sqrt {20n} * m)