NOIP2016提高A組模擬10 15 算迴圈

2021-07-23 17:41:53 字數 1631 閱讀 1803

一步步刪掉迴圈,

首先,原式是∑i

=1n∑

j=1m

∑k=i

n∑l=

jm∑p

=ik∑

q=jl

1 刪掉最後兩個迴圈 ∑i

=1n∑

j=1m

∑k=i

n∑l=

jm(k

−i+1

)(l−

j+1)

發現,當i,

j 固定,隨著k,

l 的變化,(k

−i+1

),(l

−j+1

) 都是每次減少1

so, ∑i

=1n∑

j=1m

[1+2

+⋅⋅⋅

+(n−

i+1)

][1+

2+⋅⋅

⋅+(m

−j+1

)]再根據等差數列求和公式, ∑i

=1n∑

j=1m

(n−i

+1)(

n−i+

2)(m

−j+1

)(m−

j+2)

4 又發現∑ni

=1(n

−i+1

)(n−

i+2)

, 其實就是1∗

2+2∗

3+3∗

4+⋅⋅

⋅+n∗

(n+1

) 設其為g(n

) ,m 類似

答案就是g(

n)∗g

(m)4

接著考慮求g(

n) =

12+1

+22+

2+32

+3+⋅

⋅⋅+n

2+n

=12+

22+3

2+⋅⋅

⋅+n2

+1+2

+3+⋅

⋅⋅+n

根據自然數冪和得 =n

(n+1

)(2n

+1)6

+n(n

+1)2

#include 

#include

#include

#include

#include

#include

#include

const

int maxlongint=2147483647;

const

long

long mo=1000000007;

const

int n=10000005;

using

namespace

std;

long

long ans,n,m,ny4,ans1,ans2,ny6;

long

long mi(long

long x,long

long y)

return sum;

}int main()

NOIP2016提高組模擬 積木

比賽的時候用了個神奇的小暴力,本來打算拿40分,沒想到暴力出奇蹟,隨機資料下表現優良,居然碾過去了。暴力方法不講,只貼 僅供對拍。正解顯然要用狀態壓縮 看資料範圍 設fs i,0 1 2 s表示當前已選擇的積木集合,i表示在最上方的積木編號,0 1 2表示最上方的積木哪面朝上。轉移方程容易推導。暴力...

計數 NOIP2016提高A組模擬7 15

樣例輸入 2 10 樣例輸出 90資料範圍 剖解題目 題目說的很明了了。思路 求方案數,一般會設計道dp,規律之類的。解法 數字dp,設f i j 表示當前到了第i位,這一位的數字是j的方案數。自然有 f i j f i 1 l f i j 0 l k 且 l 0 and j 0 看到這位數,很明顯...

NOIP2016提高A組模擬9 2 單峰

問1 n,n個數的全排列中有多少個滿足單峰序列的性質,並把答案mod 1e9 7 這題還是很簡單的,一開始打了乙個50分的做法,然後發現答案就是2n 1,然後沒有發現輸入也會爆,於是就得了50分 我們容易發現峰一定是最大的那個數,我們把峰放到每乙個位置上,然後在往峰的左邊隨便填一些數,每種填數的方法...