hdu 3944 DP (預處理 盧卡斯定理)

2021-07-12 00:07:45 字數 838 閱讀 1895

題目大意:

給乙個楊輝三角。然後給出行n和列m,問從第n行第m列往上走到頂部,所得的值的取模p後最小的和。

範圍:n,m<=10^9,p<10^4,t<=10^5。

思路;很容易想到肯定是往邊上走,然後一直往上走。因為邊上都是1,而m>=n/2的時候,明顯可以對稱到左邊來,所以只要算一邊就好了。

然後就是組合數的計算,想到用盧卡斯定理計算,然後走上來就好了。然後就t了。

看題目發現,樣例資料有10^5組,估計t的原因就是這個。

然後可以想到,可以先預處理出1~10^4的階乘和逆元,然後套用盧卡斯定理。……還是t。

後來看了別人的部落格,才明白要預處理出10^4範圍內所有的素數,然後將這些素數範圍內的所有情況全部預處理出來,因為10^4範圍內素數只有1229個,所以這個方法是可行的。最後一步是,要對這個路線進行化簡,否則好像還是會超時。具體我也沒搞明白,最後化簡以後答案是c(n+1,m)+n-m。

**:

#include #include #include using namespace std;

typedef long long ll;

ll n,m,p;

ll jiecheng[10006],inv[10005][10005],fac[10005][10005];

int vis[100005],prime[100005],tot,flag[10005];

void get_prime()

return ans;

}void init()

ll lucas(ll n, ll m)

int main()

return 0;

}

hdu 4791 dp預處理 二分

題意 列印東西,給出區間 張數 對應費用 到達一定張數就都按某更低的 m次詢問,問最優費用。給的時候按張數遞增給的。dp出當前張數到最後的最小值。對於詢問q,然後二分處 q的最小的乙個張數的 min 這個 p,dp 這 1 即可。nlogn 後來看網上有些人用線段樹,沒必要的。ps 開始竟然因為犯中...

HDU 1421 搬寢室 線性dp 貪心預處理

problem description 搬寢室是很累的,xhd深有體會.時間追述2006年7月9號,那天xhd迫於無奈要從27號樓搬到3號樓,因為10號要封樓了.看著寢室裡的n件物品,xhd開始發呆,因為n是乙個小於2000的整數,實在是太多了,於是xhd決定隨便搬2 k件過去就行了.但還是會很累,...

hdu 預處理 線段樹)

給n個數,m個詢問,問任意區間內與其它數互質的數有多少個 比如3個數1 2 4,詢問 1,3 那麼答案是1 千萬要記住,這樣的題目,如果你不轉變下,使勁往線段樹想 雖然轉變之後,也說要用到線段樹,但是維護的東西不同了 那麼會發現這樣的題目,區間與區間之間是無法傳遞資訊的,區間與區間是無法傳遞資訊的,...