原创 cdq分治

一種基於時間順序對序列操作進行操作的算法,陳丹琦大佬提出的,也稱時間分治。 <<算法競賽進階指南>>上解釋得就挺不錯的 就是先把一系列的操作存起來,二分去操作,每次計算左區間對右區間的影響,遞歸邊界就是L==R,即只有一個操

原创 後綴自動機(模版)

參看博客 構建 struct state { int len, link; map<char, int> next; }; const int MAXLEN = 100000; state st[MAXLEN * 2]; in

原创 cdq(時間分治)

Explorer 題意:給定n個點m條無向邊,每條邊有一個寬度(L,R)。現在有一個人在一號節點,這個人的寬度不知,問最後這個人 到達n號節點可以有多少種大小。通過一條邊的條件是這個人的寬度大小在這條邊的範圍之內。(用詞不準確,但

原创 原根

參看原根 定義 對於一個模數m,如果存在一個數g,滿足g1,g2.......gp−1modmg^1,g^2.......g^{p-1} mod mg1,g2.......gp−1modm兩兩不同,並且1&lt;g&lt;m1&

原创 樹鏈剖分(模版)

模版題目 樹鏈剖分講解 模版: #include<bits/stdc++.h> using namespace std; const int N = 1000 * 100 + 10; int n, m, r,p,val[N]; i

原创 2019牛客暑期多校訓練營(第七場)E

Find the median 動態去尋找一個序列的中位數;但是此題沒有要求在線,於是可以離線操作。由於L,R 都比較大,需要離散化。  尋找中位數,那麼數量上可定具有單調性,所以可以考慮二分去找。剛開始想用樹狀數組去維護的數量

原创 k短路(HDU6705)

題目鏈接:Path 這不是求k短路嗎?那直接A算法。仔細一看起點不固定。那A算法是行不通了。 考慮BFS搜索。 這提和牛客多校的一道求第k小團的題很像(思想很像)。 Kth Minimum Clique可以先看看這道題。 回到題。

原创 AC自動機(模板)

原文鏈接:https://www.cnblogs.com/Hero-of-someone/p/7147494.html 指針寫法: 博客來源:AC自動機算法詳解 #include<bit

原创 2019中國大學生程序設計競賽(CCPC) - 網絡選拔賽HDU6703(權值線段樹)

題目鏈接:array 題意:   給你一個數組a[],大小爲n,範圍也在1~n。兩個操作: (1,pos),indicating to change the value of apos to apos+10,000,000;

原创 Miller-Rabin 素數判定

費馬小定理: ap−1≡1mod(p)a^{p-1}\equiv 1 mod (p)ap−1≡1mod(p) (p爲質素) 二次探測原理 x2≡1mod(p)x^2\equiv 1mod(p)x2≡1mod(p)

原创 2019牛客暑期多校訓練營(第七場)H

Pair 數位dp 數位dp還是寫得太少了,開始時完全不知道怎麼下手,還是看了別人的博客纔算是理解了一點。 題意:求滿足下列條件之一的數對的個數 1  x & y>C 2  x^y<C 1&lt;=x&lt;=A1&lt;

原创 霍爾定理

霍爾定理是判斷二分圖是否是完美匹配的充要條件 首先要求∣X∣=∣Y∣|X|=|Y|∣X∣=∣Y∣,即是左右兩部分的節點個數相等 其次 對於XXX的任意子集a都要滿足 ∣a∣&lt;=∣b∣|a|&lt;=|b|∣a∣<=∣b∣,

原创 Palindromic Tree

一個很厲害的算法,具體怎麼實現的不是很清楚,本着不求甚解的態度,知道怎麼用就好了。 next[][]:類似於字典樹,指向當前字符串在兩段同時加上一個字符 fail[] fail指針:類似於AC自動機,返回失配後與當前i結尾的最長迴

原创 2019 杭電多校 HDU - 6623

Minimal Power of Prime 題意:讓你把一個數質因數分解,輸出所有質因數指數的最小值。 這個題還是挺有意思的,解題思路也比較好玩。 思路:先預處理出10000以內的素數預處理出來。對於每一個 n ,我們先處理它1

原创 2019牛客暑期多校訓練營(第五場)F

題目鏈接 題意:給你一組數據,讓你從中選取儘可能多的數,並且選出來的數兩兩之間的二進制表示不同的 位數要大於1。 思路:反向思考,如果兩個數之間只有一位不同,那我們就在這兩個數之間建一條邊。那麼就是求一個最大獨立集的問題。