0%

2025钉耙编程-中国大学生算法设计暑期联赛(8)——最努力的活着

思路讲解

暴力程序是这样的。

1
2
3
4
5
6
7
8
i128 ans=0;
while(true){
if(n<W) break;
ans+=(1+N)*N/2-(sum+1)*sum/2;
sum+=n/W;
n-=n/W;
}
ans+=(1+N)*N/2-(sum+1)*sum/2;

不难发现,我们可以分块处理相同n/W的部分,以获得logn的时间复杂度。

AC代码

https://acm.hdu.edu.cn/contest/view-code?cid=1179&rid=14726

心路历程(WA,TLE,MLE……)

容易发现,fob的计算一定是交给后面算的,就算是最后一个也是。

image