原创 AC自動機

AC自動機: 解決多模式串匹配問題 算法流程: 基本流程: 1.建立trie樹 2.構造fail指針(指向最長後綴節點,用bfs實現) 3.查詢 P3808 AC自動機(簡單版) 題意: 給定n個模式串和1個文本串,求有多少個模

原创 CodeForces2 B.The least round way (dp)

題意: 給一個n2的矩陣a,矩陣中的每一個數a(i,j)在0到1e9之間, 現在要找一條從(1,1)到(n,n)的路徑,使得路徑上數的乘積結果末尾的0數量最少 輸出最小值以及路徑 思路: 總所周知,末尾0的個數只與質因子中2和5的

原创 整理貨架(模擬/思維)

思路: 解法1: 因爲數據範圍較小,所以直接模擬即可。 解法2: 對於每一個位置,需要輸出的次數T是需要向左邊輸出的次數加上需要向右邊輸出的次數(我用了前綴和計算), 因爲題目說了一次操作可以選擇任意數量的單元進行移動,所以對T

原创 CodeForces547 B.Mike and Feet (單調棧/dp)

題意: 給定長度爲n的數組, n<=2e5 定義F(l,r)爲區間[l,r]的最小數,ans(k)爲max(F(l,l+k-1)),其中1<=l<=n-k,即ans(k)長度爲k的區間的F的最大值。 現在要求輸出k依次爲1到n的a

原创 CodeForces 1321 E.World of Darkraft: Battle for Azathoth (線段樹)

題意: 有n個武器,每個武器有攻擊力和花費 有m個防具,每個防具有防禦力和花費 有p個怪物,每個怪物有攻擊力和防禦力和金幣 現在你必須購買武器和防具各一個,如果武器的攻擊嚴格大於怪物,且防具的防禦嚴格大於怪物,則可以擊殺怪物 問最

原创 牛客小白月賽18

牛客小白月賽18 E.Forsaken的數列( 數據結構題(splay,無旋treap) F.Forsaken的位運算魔法( 類歐幾里得算法, H.Forsaken喜歡獨一無二的樹 題意: 給定n個點m條邊的無向圖,問需要刪

原创 2015藍橋杯B組初賽

方程整數解 題意: 給定n,求出 a^2 + b^2 + c^2 = n(1<=n<=10000)的所有解,解要保證c>=b>=a>=1。 思路: 枚舉a和b,利用a和b推c,判斷是否合法即可 code: #include<bi

原创 CodeForces 1296 E2.String Coloring (hard version)

題意: 給定長度爲n的字符串 現在要給字符串的每個字符塗色,塗完色之後: 如果相鄰位置的字符顏色不一樣,則可以交換他們的位置 現在要你構造出一種塗色方案,使得能夠通過交換讓最後字符串字典序最小,且塗色所需不同顏色數量最少 思路:

原创 CodeForces 1313 C2.Skyscrapers (hard version) (單調棧)

題意: 給定長度爲n的數組a, 現在要在這n個位置建立大廈,但是要滿足一下要求: 1.位置pos的高度h[pos]不能超過a[pos] 2.位置pos左邊和右邊不能有高於h[pos] 輸出高度和最大的建立方案(輸出每個位置的高度h

原创 牛客小白月賽19

牛客小白月賽19 D.「金」初心如金 題意: 給n,首先給一個奇數,如果這個數是素數則ans=1,否則ans=0 接下來n-1次原本也是給一個奇數,但實際給的數=lastans^原本要給的奇數 問前n-1個數的ans是多少(是

原创 牛客小白月賽20

牛客小白月賽20 A.斐波那契 題意: 給定n,計算斐波那契數列前n項的平方和,對1e9+7取模 n<=1e18 思路: 斐波那契數列的前n項平方和=f(n)*f(n+1),推導過程在此 因此利用矩陣快速冪計算出兩項斐波那契數,

原创 牛客小白月賽21

牛客小白月賽21 B.Bits D.DDoS 題意: 給一個n個點m條邊得帶權有向無環圖(拓撲圖),邊權爲耗時 1號點可以任意時刻發送任意數量數據包,n號點接受到數據包之後,會屏蔽這一時刻後的所有數據包。 不同的數據包路徑不能

原创 CTU Open Contest 2019

CTU Open Contest D.Beer Flood E.Beer Game F. Beer Marathon 題意: 在一條直線上有 N 個啤酒攤,這些啤酒攤的位置在直線上隨機擺放,題目要求是任何兩個 連續啤酒攤位

原创 貪心題

牛客 匹配星星 題面: 思路: code: //https://ac.nowcoder.com/acm/contest/3005/I #include<bits/stdc++.h> using namespace std;

原创 CodeForces 628 B.New Skateboard (簡單數學)

題意: 給一個數字字符串,問有多少個子串是4的倍數 思路: 以前寫過一題:CodeForces 550C 這題的方法: 因爲1000是8的倍數,則只需要看最後三位是否8的倍數,暴力判長度一二三位即可 現在這題: 因爲100是4的倍