题解:P12131 [蓝桥杯 2025 省 B] 客流量上限
思路
因为对于任意分店 $i$ 和 $j(1\le i,j\le2025)$,它们的客流量上限 $A_i$ 和 $A_j$ 的乘积不得超过 $ij+2025$。
所以,对于任意分店 $i$,$A_i\le\sqrt{i^2+2025}$。
我们直接打表:
1 | for(int i=1;i<=2025;i++) cout<<(int)sqrt(i*i+2025)<<' '; |
发现在 $i\ge1013$ 时 $A_i \le i$。
那么当 $1\le i<1013\le j\le2025$ 时,$A_iA_j=A_ij,A_iA_j\le ij+2025$。
两边同除 $j$:$A_i\le i+\frac{2025}{j}$。
发现:$A_i\le i+\lfloor\frac{2025}{j}\rfloor$。
由于 $1013\le j\le2025$,所以,$A_i\in[1,i+1]$。
所以我们可以得出:
$A_1$ 有 $2$ 种选择;
$A_k$ 为了不与 $A_1$~$A_{k-1}$ 选的重复,总是有 $i+1-(i-1)=2$ 种选择。
所以答案就是 $2^{1012}$。
然后就是算了,快速幂和枚举都行。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 heyZzz's OI Blog!