題目大意:
給乙個楊輝三角。然後給出行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 千萬要記住,這樣的題目,如果你不轉變下,使勁往線段樹想 雖然轉變之後,也說要用到線段樹,但是維護的東西不同了 那麼會發現這樣的題目,區間與區間之間是無法傳遞資訊的,區間與區間是無法傳遞資訊的,...