原创 P1514 引水入城(dfs+區間覆蓋問題)

題目傳送門 題意: 給你一張地圖(最大規模500*500),每個點有一個高度,可以從第一行任意位置出發,可以向四周走到一個低於自己的位置,現在問你最後一行的所有點能不能都被走到,如果不能,輸出有幾個點不能被走到,如果能,輸出最少從

原创 P3807 【模板】盧卡斯定理(組合數學)

題目傳送門 這種求組合數我們不一定能通過常規的組合數方法去求,因爲有可能n,m會大於mod,這樣我們求出來的組合數就會不正確,而盧卡斯定理就可以很好的解決這一問題。 由於能力限制,證明後續補上 因爲題目保證p是質數,所以費馬小定

原创 普普通通的DP(按位貪心DP)

題目傳送門 題意: 還記得這題嗎?CF1332D 就是說一個二維矩陣,從(1,1)走到(n,m),只能向下或右走,獲得的總貢獻是每一步的&運算,問你最後能獲得多少貢獻。 思路: 我們很容易想到,dp[i][j]表示走到(i,j)

原创 E. Necklace Assembly(思維、暴力)

題目傳送門 題意: 給你一個字符串,你從中挑選一些讓它們成爲一個環,使得這個環朝一個方向轉k下,與原來看起來一樣,找到你能夠滿足這個條件的可以挑選的最多的字符數量。 思路: 我們暫時把這種性質成爲k循環。假如我們一個環是k循環的,

原创 I - Master of GCD(差分,2017杭州CCPC)

題目傳送門 題意: 給你一個全是1的數組,每次選一個區間,對區間中所有數進行乘x的操作(x== 2||x ==3),問你最後所有數的gcd是多少(對998244353取模)。 思路: 乍一看以爲是線段樹維護區間乘法,但是取模之後a

原创 AcWing 312. 烏龜棋(線性dp)

題目傳送門 題意: 給你一個長度爲n的地圖,每個點都有一個對應的分數,給你M張牌,點數有1,2,3,4四種(不一定都有),你最開始在第一個點,默認獲得這個點的分數,然後我們怎樣使用這些牌,才能使得獲得的分數最大?輸出最大值。 數據

原创 P1939 矩陣加速(距陣快速冪)

題目傳送門 思路: 這個數據範圍,想要硬算是不可能的。所以我們需要用距陣快速冪去加速這個遞推。我們可以構造一個距陣: 然後我們發現, f[ i ]=f[i-1] * 1+ f[i-2] * 0 + f[i-3] * 1; f

原创 P5788 單調棧

題目傳送門 題意: 給你一個數列a[i],定義f[i]爲[i+1,n]中第一個大於a[i]的數字的下標,如果沒有則f[i]=0。 思路: 單調棧模板題,用棧存下標,如果新來的數字大於棧頂下標對應的數字,就彈出棧頂,直到棧空或者棧頂

原创 J 小梁的揹包(01揹包,記錄所選物品數量)

題目傳送門 題意: 給你一個容量爲s的揹包,n個物品,每個物品有自己的價值和體積,求揹包所能容納的物品的最大價值,並求出此時揹包中物品數量。 思路: 求最大價值並不難,直接模板就行了,然後輸出數量的話,我們看價值的轉移方程:dp[

原创 B - Master of Phi(歐拉函數性質,2017杭州CCPC)

題目傳送門 題意: 給你一個數的質因數分解式,質因子不超過20個,要你求∑ d|n (φ(d) * (n/d))mod998244353。 思路: 看這個式子,我們發現φ(d* p) * n/(d *p) =φ(d) * n/d

原创 C. Even Picture(構造)

題目傳送門 題意: 在一個可以無限空間擴展的網格紙中,我們可以對一些點進行染色,要求是每個被染色的點周圍四個點中,只能有偶數個點被染色,現在要求你輸出,恰好有n個點周圍四個點都被染色的一種方案(其他點周圍是兩個)。 思路: 考慮下

原创 C. Pluses and Minuses(思維,前綴和)

題目傳送門 題意: 給你一個長度小於1e6且只有’+’、’-'的字符串,給你如下程序,要求輸出res。 res = 0 for init = 0 to inf cur = init ok = true fo

原创 P5431 乘法逆元2(逆元)

題目傳送門 時限: 550ms 思路: 按照這題數據範圍,我們一個一個去求a[i]的逆元,nlogp,對於這個時間顯然不夠,所以我們要換個方向思考。我們發現我們可以直接通分,分母直接變成了a[1]*a[2]*a[3]*a[4]

原创 E 皮卡丘這麼可愛(多重揹包二進制優化+完全揹包)

題目傳送門 題意: 給你一個起始時間,一個終止時間,在這個時間內,你可以觀賞一些皮卡丘,每個皮卡丘有一個可愛值,看這個皮卡丘需要的時間,這個皮卡丘可以看多少次(0表示無限次),輸出在這個時間段內,你能獲得的最大可愛值。 思路: 很

原创 P2197 nim遊戲(nim博弈)

題目傳送門 題意: 有n堆石子,每一堆有a[i]個,兩個人輪流取石子,每次只可以在一堆中取,可以取完但是不能不取,最後無石可取的人失敗,假設雙方都足夠聰明,問你先手有沒有必勝策略? 結論: 當且僅當 a[1] xor a[2] x