两道趣题

Posted wzzyr24

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两道趣题相关的知识,希望对你有一定的参考价值。

好吧,估计以后会觉得这两道题很沙雕,但我现在实在太菜了……


pro.1 给定\(n\),求$ \sum\limits_i = 1^n \left[ \fracni \right] $,数据范围\(1 \leqslant n \leqslant 10^12\)

首先\(O(n)\)肯定凉了,所以得找规律(又是找规律,害怕.jpg
根据 看std 手模与观察,可以发现在一段区间内的值是相等的,最明显的就是在\(\left[ \fracnn/2 \right]\)之后所有的值都是\(1\),从这里入手,进一步发现连续为同一个值的个数为\(\left[ \fracn[n/i] \right]-i+1\)个,于是我们便可以在接近\(O(\log n)\)的复杂度内求解之。
在考场上,想到这里一般这道题就结束了,但我不禁还是要刨根问底一下,为什么是这样呢?毕竟如果每次总凭借直觉来做题是没有多大提高的。
其实(这词用得好像我一下就想出来了一样2333),在每次求得一个商\([n/i]=d\)时,我们实际上是在回答这样一个问题:“在\(n\)中有多少个\(i\)?(当然答案是\(d\))”,但是我们要求的东西却是:“有多少个连续的\(d\)?”首先我们知道,在\(n\)中最多有\([n/d]\)\(d\),但是在\(i\)之前有比\(d\)更大的商,所以要把比它大的个数减去,而这个个数刚好是\(i-1\)个,于是答案便呼之欲出。


pro.2 给定\(n\),数列\(\ a_n\\)与区间\([minb,maxb]\),使得方程\(\sum\limits_i = 1^n a_ix_i = b\)有非负整数解,其中\(b \in [minb,maxb]\)。数据范围:\(n \leqslant 12,a_i \leqslant 5 \times 10^5,1 \leqslant minb \leqslant maxb \leqslant 10^12\)

这题是真的毒瘤,一开始还在想什么高斯消元和线性筛之类的东西……

以上是关于两道趣题的主要内容,如果未能解决你的问题,请参考以下文章

趣题[1]

趣题[0]

序列相关的趣题 之二

dp趣题

二维数组迷宫趣题

二维数组迷宫趣题