∑i=
1n∑j
=1ii
×⌊ij
⌋j∑i
=1n∑
j=in
j×⌊j
i⌋
i\sum_ ^ \sum_ ^ i \times \lfloor \frac \rfloor ^ j\\ \sum_ ^ \sum_ ^ j \times \lfloor \frac \rfloor ^ i\\
i=1∑n
j=1∑
ii×
⌊ji
⌋ji=
1∑n
j=i∑
nj×
⌊ij
⌋i接下來只需要從小到大列舉i
ii,因為有j∈[
ki,(
k+1)
i],⌊
ji⌋=
kj \in[ki, (k + 1)i], \lfloor \frac \rfloor = k
j∈[ki,
(k+1
)i],
⌊ij
⌋=k,所以這裡有乙個分塊性質,差分字首和即可得到。
最後在得到的陣列中乘上乙個陣列下標,在求一次字首和即是答案了。
#include
using
namespace std;
const
int n =
3e6+
10, mod =
1e9+7;
int f[n]
, g[n]
, n;
void
init()
for(
int i =
1; i < n; i++)}
for(
int i =
1; i < n; i++)}
intmain()
printf
("%d\n"
, ans)
;return0;
}
牛客練習賽53 ABC
a 簡單dp include define ll long long using namespace std const ll mod 1e9 7 ll d 1000000 2 ll n intmain cout d n 1 d n 0 mod return0 b 分塊 include define...
牛客練習賽4 B
思維題,把 i2 j2 ai2 aj2 絕對值符號去掉後,我們設i2 j2 ai2 aj2 j2 i2 aj2 ai2 j2 aj2 i2 ai2 或者 i2 j2 ai2 aj2 j2 i2 aj2 ai2 ai2 i2 aj2 j2 原式化簡後只有這兩種形式,那麼我們可以設定兩個陣列a n b ...
牛客練習賽69 B
題意 給定n nn個數,乙個x xx表示可以劃分成最多x xx個串,乙個y yy表示在乙個串中最多選擇y yy個數。最後求 i 1x j 1yv al i j sum x sum yval i,j i 1x j 1 y va l i,j v al i,j val i,j val i,j 為 將n n...