竞赛
考级
我们枚举每一个 xxx,代入计算即可。 时间复杂度为 O(nlogn)O(n\log n)O(nlogn)。(证明:内层语句的执行次数为 ∑i=2n⌊ni⌋\sum\limits_{i=2}^n\lfloor\dfrac ni\rfloori=2∑n ⌊in ⌋,即为 n∑i=2n⌊1i⌋n\sum\limits_{i=2}^n\lfloor\dfrac 1i\rfloorni=2∑n ⌊i1 ⌋,右半式为调和级数,渐进复杂度为 O(lnn)O(\ln n)O(lnn),总时间复杂度为 O(nlnn)O(n\ln n)O(nlnn) 等于 O(nlogn)O(n\log n)O(nlogn)。) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 一个更优的方法是枚举+推式子。考虑 SSS 的形式为 ∑i=1⌊n/x⌋ix\sum\limits_{i=1}^{\lfloor n/x\rfloor}ixi=1∑⌊n/x⌋ ix。变形为 x∑i=1⌊n/x⌋ix\sum\limits_{i=1}^{\lfloor n/x\rfloor}ixi=1∑⌊n/x⌋ i,右边可以套公式知道结果为 ⌊nx⌋×(⌊nx⌋+1)2\dfrac{\lfloor\frac nx\rfloor\times(\lfloor\frac nx\rfloor+1)}{2}2⌊xn ⌋×(⌊xn ⌋+1) 。所以,SSS 的值为 x⌊nx⌋×(⌊nx⌋+1)2x\dfrac{\lfloor\frac nx\rfloor\times(\lfloor\frac nx\rfloor+1)}{2}x2⌊xn ⌋×(⌊xn ⌋+1) ,枚举 xxx 即可,时间复杂度为 O(n)O(n)O(n)。代码很简单,就不贴了。
暑 假 神(开学祭
旅行者
题意分析 给出一个整数nnn,要求找到一个数字xxx,计算所有小于nnn的xxx的倍数之和SSS。 xxx的取值有许多,找到其中SSS数值最大的xxx输出即可。 算法分析 对于所有的情况来说,当x=2x=2x=2的时候SSS的取值一定为最大,所以直接输出222一定为最优解。 但是有一种特殊情况,为n=3n=3n=3时,此时x=3x=3x=3比x=2x=2x=2更优,因此需要特殊判断下即可。 时间复杂度分析 O(1)O(1)O(1) STD标程
AC君
最简版
🎧
∵S=k(k+1)x2,kx≤n\because S=\dfrac{k(k+1)x}{2},kx\le n∵S=2k(k+1)x ,kx≤n ∴Smax=n(k+1)2\therefore S_{max}=\dfrac{n(k+1)}{2}∴Smax =2n(k+1) 所以kkk越大,即xxx越小SSS越大. 注意判断123特殊情况 时间复杂度:O(1)O(1)O(1)
队团加不)ด้้童帅_者仇复