A. 决战

因为把暴力放过去了,所以这题就成水题了。

其实正解的做法与那道求匹配方案权值和的题在链上的情况很类似。

大概就是说整一个分治出来,然后 $dp_{l,r}$ 处存放一个多项式。

其中 $l,r$ 分别表示左右两个端点的状态,$x^k$ 项系数表示放置了 $k$ 个人的方案数。

因为每个转移矩阵都是一样的,所以分治就无意义了,直接整个快速幂就行了。

 

B. gift

一眼 $0/1$ 分数规划,然后发现规划完之后的形式是,选择付出代价,同时选择两个对应一个收益。

所以这个就是网络流最小割的经典模型了,弄一弄边权就可以把收益全放到边上。

然而这题还挺麻烦的,因为当网络流得到的结果为 $0$ 的时候,无法判断此时是存在一组合法解使得收益-付出=0还是说最优策略只有不买礼物。

为了解决这个问题,我选择了小数二分,然后写实数网络流,然后就被卡了。

然而出题人并没有想到这个问题,所以整个整数意义下的二分,假装没有这个问题,或者假装要最大化的是 $\lfloor \frac{B-1}{A} \rfloor$ 就可以 AC 这道低质量题了。 

 

C. 质数

因为是积性函数,所以大概可以想到直接套个 $min25$ 筛,然而看到 $10^{12}$ 的数据范围还是算了吧。

然后可以发现题中的函数 $2^{f(n)}$ 是很特别的。

一个经典的套路就是考虑把这个东西展开,然后均摊贡献。

然后我就将这个玩意摊到了每个无平方因子数上,所以答案是 $\sum \limits_{i=1}^n \lfloor \frac{n}{i} \rfloor \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))$ 的。