山東省第八屆ACM省賽C firework

2021-08-04 05:05:57 字數 1057 閱讀 5490

題目

題意:在數軸上會有烟花,他會向前乙個和後乙個擴散,然後在一定時間後,要求最後位置有多少烟花。

模擬一下發現一行中把0去掉之後他就是乙個楊輝三角。新知識:楊輝三角就是組合數。但是因為組合數太大了,而且太慢了,所以要用乘法逆元。乘法逆元有好多種解法。這裡用費馬小定理。然後要考慮要求的點和烟花點的距離。

#include

#include

#include

using

namespace

std;

const

int fcnt=100005;

const

long

long mod=1000000007;

long

long fac[fcnt];

void getfac()

long

long quickpow(long

long a,long

long b)

return ret;

}long

long inv(long

long a)

long

long c(long

long n,long

long m)

int main()

ans=(ans+(t2*c(n,(abs(t1-m)+n)/2))%mod)%mod;//第奇數個點-1然後除以二就是組合數的m,這裡要注意絕對值。

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

}}

順便補乙個盧卡斯的用法(從師哥那裡搬來的)

lucas定理(大部分情況 p<105)

cmn%p=(cm%pn%p%p∗cm/pn/p%p)%p

且c0n=1;

這樣我們就可以用逆元法求出cm%pn%p,然後遞迴求解cmn%p

lucas定理模板(c(m,n)代表cmn)

long

long lucas(long

long n,long

long m)

第八屆山東省acm省賽總結

打了個醬油,還是挺難過的,還好早就習慣了這種心態了,也打擊不了我。先說下滾榜,滾榜的時候還是挺激動的,畢竟封榜的時候就在榜單末尾了,隨時都可能從榜上滾下來,結果也是意料之中的滾下來了。比賽開始首先a掉i題,g題因為我在做i題的時候把提示的修改題目的資訊關掉了,導致不知道題目修改資料了,wa了好幾發,...

山東省第八屆ACM省賽遊記

day 1 凌晨,來了幾分興致,和隊友在vjudge上開了一把zoj月賽,wa一發悶一口拿鐵,一瓶拿鐵 不一會就被喝完了!好氣啊!遂開始愉快地打遊戲,打著打著,woc,居然3點半了,小睡片 刻,咬上幾口麵包,便乘著校車前往了青科。到達目的地的 first impression 志願者超讚!經過各種排...

第八屆山東省浪潮杯C題

挺簡單的一道題 不知道為什麼去年那麼多隊這道題都過不了 你隨便寫寫這不就是組合數嗎 然後先打表階乘 在用逆元 啊ac includeusing namespace std typedef long long ll const ll n 2e5,m 1e9 7 ll jc n 10 ll t,w in...