A. 决战
因为把暴力放过去了,所以这题就成水题了。
其实正解的做法与那道求匹配方案权值和的题在链上的情况很类似。
大概就是说整一个分治出来,然后 $dp_{l,r}$ 处存放一个多项式。
其中 $l,r$ 分别表示左右两个端点的状态,$x^k$ 项系数表示放置了 $k$ 个人的方案数。
因为每个转移矩阵都是一样的,所以分治就无意义了,直接整个快速幂就行了。
B. gift
一眼 $0/1$ 分数规划,然后发现规划完之后的形式是,选择付出代价,同时选择两个对应一个收益。
所以这个就是网络流最小割的经典模型了,弄一弄边权就可以把收益全放到边上。
然而这题还挺麻烦的,因为当网络流得到的结果为 $0$ 的时候,无法判断此时是存在一组合法解使得收益-付出=0还是说最优策略只有不买礼物。
为了解决这个问题,我选择了小数二分,然后写实数网络流,然后就被卡了。
然而出题人并没有想到这个问题,所以整个整数意义下的二分,假装没有这个问题,或者假装要最大化的是 $lfloor frac{B-1}{A} floor$ 就可以 AC 这道低质量题了。
C. 质数
因为是积性函数,所以大概可以想到直接套个 $min25$ 筛,然而看到 $10^{12}$ 的数据范围还是算了吧。
然后可以发现题中的函数 $2^{f(n)}$ 是很特别的。
一个经典的套路就是考虑把这个东西展开,然后均摊贡献。
然后我就将这个玩意摊到了每个无平方因子数上,所以答案是 $sum limits_{i=1}^n lfloor frac{n}{i} floor mu ^2(i)$。
然后显然可以整除分块,然后显然可以直接根号容斥出区间无平方因子数的个数。
然后显然可以预处理较小的部分,然后复杂度就是 $O(n^{2/3})$ 了,然而出题人并没有给部分分,所以请想到出题人的正解。
将 $2^{f(n)}$ 转化为划分质因子集合,那就是 $sum limits_{i,j} [i*j=n][gcd(i,j)=1]$。
那就可以推一推式子,莫比乌斯反演搞一下,然后就可以根据调和级数证明复杂度是 $O(n^{0.5}*ln(n))$ 的。