原创 除法取模與逆元

我們經常在做題時會看到這樣一句話:由於答案較大,請輸出答案mod m的結果。(其中m一般爲一個大質數) 我們經常會使用以下幾個等式: (a+b)≡(amodm+bmodm)(modm) (a−b)≡(amodm−bmodm+

原创 Lucas定理與擴展Lucas

之前看了乘法逆元(詳見除法取模與逆元),發現不能處理不互質的情況,於是去找方法,最後找到了Lucas定理。。。 雖然與期待中的不一樣,但是還是非常有用的。 (1)Lucas定理: 若p爲素數,則有: Cnm≡∏i=0kCnim

原创 SGU101 Domino

題目大意:         給出n張多米諾骨牌,每張骨牌都由前後兩個0到6的數字組成(1 ≤ N ≤ 100)。要求相鄰兩張多米諾骨牌接觸的一邊必須數值相同,給出一種將n張骨牌依次擺放的方法。 這道題開始時想錯了,把每一張骨牌當

原创 靜態 Splay Tree 模板

複習一下Splay,沒想到一個簡單的模板寫了一個多小時。。。 注:該模板比較短,所以可能會有些難以理解。該結構體包含插入與查詢操作。 #include<cstdio> #include<cstring> #include<algo

原创 SGU100 A+B

好像幾乎每一個題庫的第一題都是A+B…… #include<cstdio> #include<iostream> using namespace std; int main() { int a, b; cin >

原创 SGU103 Traffic Lights

題目大意: 一個城市的交通系統可以由一些節點和道路來表示。兩個節點之間最多存在一條道路,且不存在道路起點與終點相同。每一條道路都是雙向的。在每一個節點由一個交通信號燈,它只有藍色和紫色兩種顏色,並且週期性的變換,兩種顏色

原创 樹鏈剖分

我們有時候需要一種方法快速地求出樹上任意兩點之間路徑的權值和(或者路徑上邊權的最大最小值)。這時,我們就可以用到樹鏈剖分。所謂樹鏈剖分,就是將一棵樹分爲許多條鏈,然後將這些鏈連起來,用線段樹來維護區間的和(或者最大最小值)。 下

原创 SGU102 Coprimes

題目大意:       給出一個正整數N(1<=N<=10^4),求出不大於N並且和N互質的所有正整數的個數。       又是水題。。。枚舉N範圍內的所有正整數,通過gcd來算出兩數是否互質,若不互質,把它的倍數全部篩掉,若互

原创 NOIP2004石子合併(環形DP + 四邊形不等式優化)

經典的環形Dp問題,定義dp[i][j]爲將第i堆到第j堆石子全部合併後所用的最小花費。則有如下狀態轉移方程: dp[i][j]=min(dp[i][j],dp[i][k−1]+dp[k][j]+w[i][j])(k∈(i,j]

原创 SPOJ00375 Query on a tree 樹鏈剖分

題目大意: 給你一棵n個節點的樹,實現以下兩種查詢: 1.CHANGE i ti : 將第i條邊的權值更改爲ti 2.QUERY a b : 詢問節點a到節點b路徑上最大的邊權 樹鏈剖分的水題,樹鏈剖分詳見:傳送門 這裏注

原创 POJ2352 Stars(樹狀數組 or SplayTree)

發現網上並沒有這一題的Splay做法。。。SplayTree模板點這裏 其實是水題,所以不做講解。 這裏只是來貢獻代碼。。。 樹狀數組: /* ID: Sunshine_cfbsl LANG: C++ */ #include<cstd

原创 POJ1811 Prime Test (Pollard-Rho算法)

顯然,這麼大的數據不能用樸素算法過。 需要用到一種叫做Pollard-Rho的算法。 Pollard-Rho算法戳這裏 看懂了就變成了裸題。。。 直接上代碼: #include<cstdio> #include<algorithm>

原创 SGU105 Div 3

水題。。。 題目大意: 給出如下序列: 1, 12, 123, 1234, 12345, 123456, 1234567, 12345678, 123456789, 12345678910, 1234567891011… 求出前n

原创 SGU104 Little shop of flowers

好久沒有做SGU了,今天來刷一道。 題目大意: 有V個花瓶(1≤V≤100) ,有F束花(1≤F≤100) ,且F≤V ,現在要把所有的花放進V個花瓶中,且每個花瓶中只能放一束花,花必須按照編號由小到大的順序放在花瓶中。也就是說∀i<

原创 更換博客

其實此博客已經很久沒有更新了,像我這種有強迫症比較喜歡折騰的人,就是不習慣那麼長的域名(—_—) 新博客:sunshine-cfbsl.com