NOIP提高模擬 20181016 T1 膜法

2021-08-29 03:54:16 字數 1819 閱讀 2788

之前在考試的時候,因為太菜,沒有想到正解,因而打了乙個30pt

s30pts

30pt

s的暴力,居然沒有t。

30 pt

s30pts

30pts做法

根據乘法原理,最終答案為每個環節的方案數乘起來。

根據加法原理,乙個環節的方案數為

∑ j=

lrck

i+j−

lj

\sum_^c_+-}^

j=l∑r​

cki​

+j−l

j​ o(n

2)

o(n^)

o(n2

) 預處理組合數,然後 o(n

m)

o(nm)

o(nm

)統計即可。

100 pt

s100pts

100pts

做法每個環節實際上是要求

∑ j=

lrck

i+j−

lj=∑

j=lr

cl−k

ij

\sum_^c_+-}^=\sum_^c_}^

j=l∑r​

cki​

+j−l

j​=j

=l∑r

​cl−

ki​j

​ 而根據組合數的恒等式,有:

∑ j=

lrcl

−kij

=cr+

1l−k

i+1−

cll−

ki+1

\sum_^c_}^=c^}+1}_-c^}+1}_

j=l∑r​

cl−k

i​j​

=cr+

1l−k

i​+1

​−cl

l−ki

​+1​

那麼我們就可以直接將階乘o(n

)o(n)

o(n)

處理出來,再求逆元,這樣就可以做到o(m

)o(m)

o(m)

的統計。

talk is cheap, show you the code:

#include

using

namespace std;

const

int mod=

1e9+7;

intread()

/* 30pts

long long c[2005][2005];

int n,m;

void getc()

int main()

printf("%lld\n",ans);

return 0;}*/

const

int n=

1e5+10;

int n,m;

int fac[n]

,ifac[n]

;int

mul(

int x,

int y)

intpower

(int a,

int b,

int ret=1)

intcalcinv

(int x)

intc

(int a,

int b)

intdec

(int x,

int y)

intmain()

printf

("%d\n"

,ans)

;return0;

}

NOIP提高組 20151029模擬

其實這套題目並不算太難,但是還是發揮不了100 水平。第一題直接線性篩法,求出質數,然後就可以判斷乙個數是否為質數了。這道題還可以用miller rabin去求,後者的速度較快,如果資料再大些,就要使用後者了。第二題,比賽時發現了,當n 7時,答案會每四個一迴圈,但是就沒有繼續往下想,其實想下去會想...

NOIP提高組模擬 Value

相信大家一看到這道題就想起最經典的揹包問題,於是毫無疑問就往dp方向想。於是我們設出狀態轉移方程,設f i j k 為我要拿i個物品,已經選了j個,現在第j個我選了k的最大價值,那麼f i j k max,其中l為第j 1次選擇的物品。但很快我們發現,你這樣做是不行的,因為我們還要解決順序問題,選擇...

NOIP提高組模擬 幻象

phantom是一位愛思考的哲 學家。最近phantom得到了森 妖精的真傳。在他練功的時候,每秒他的思緒中都有一定的概率浮現出奇 異的幻象,持續x秒的幻象將產生x 2 的幻象值。phantom練功發自真心,他想知道,在n秒內他期望產生的幻象值是多少。因為持續x秒的幻象將產生x2 的幻象值,所以設乙...