原创 C++ STL優先隊列(STL堆)

優先隊列(堆) 頭文件:#include< queue > 大根堆定義:priority_queue< int >pq 小根堆定義:priority_queue< int ,vector< int >,greater< int

原创 POJ 3734 Blocks

題目鏈接 遞推 + 矩陣快速冪優化 /* 題意,有n個塊,用 0, 1, 2, 3來染色 求0, 1塊數爲偶數的方案數 a[i] 表示前i個0,1塊都爲偶數的方案數 b[i] 表示前i個0,1塊一奇一偶的方案數 c[i] 表示前

原创 C++競賽編程技巧

二進制集合枚舉子集 舉一個二進制集合的子集,可以看做原集合忽略0之後不斷-1 就有了這樣一種算法: for (int i = s; i; i = (i - 1) & s) i - 1使得末尾的0全部變成1,但是由於&s,原來是0

原创 kmp算法解析

C++:http://blog.csdn.net/qq_36288976/article/details/75948886 kmp算法是一個效率非常高的字符串匹配算法。不過由於其難以理解,所以在很長的一段時間內一直沒有搞懂。雖然網

原创 狀態壓縮方法

狀態壓縮方法 狀態壓縮是信息學競賽中一個很常見的方法,最最常見的是二進制壓位。 做過USACO的同學會知道有很多搜索和DP都可以用狀態壓縮優化。一般來講,如果狀態的夠成非常多,但每個構成相對簡單,就可以狀態壓縮,比如巨大的0/1矩陣

原创 求兩個數組的最長公共子序列(LCS)

求兩個數組的最長公共子序列(LCS) 樣例 輸入: 5 5 1 3 2 0 3 1 0 2 3 3 輸出: 3 求兩個數組的最長公共子序列,思路其實很簡單, 兩個數組s[i],t[i]。f[i][j]表示s[1~i]和t[1~j]的

原创 線段樹基本操作C++

轉載於:百度百科        支持以下操作1 x 若x不存在,插入x2 x 若x存在,刪除x3 輸出當前最小值,若不存在輸出-14 輸出當前最大值,若不存在輸出-15 x 輸出x的前驅,若不存在輸出-16 x 輸出x的後繼,若不存在輸出

原创 洛谷P1011 車站(題目來源:https://www.luogu.org/problem/show?pid=1011)

 P1011 車站 題目描述 火車從始發站(稱爲第1站)開出,在始發站上車的人數爲a,然後到達第2站,在第2站有人上、下車,但上、下車的人數相同,因此在第2站開出時(即在到達第3站之前)車上的人數保持爲a人。從第3站起(包括第

原创 洛谷P1025 數的劃分(題目來源https://www.luogu.org/problem/show?pid=1025)

 P1025 數的劃分題目描述將整數n分成k份,且每份不能爲空,任意兩個方案不相同(不考慮順序)。例如:n=7,k=3,下面三種分法被認爲是相同的。1,1,5; 1,5,1; 5,1,1;問有多少種不同的分法。輸入輸出格式輸入格式:n,k

原创 HDU 動態規劃經典題

Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 揹包;第一次做的時候把概率當做揹包(放大100000倍化爲整數):在此範圍內最多能搶多少錢 最腦殘的是把

原创 51Nod-1259-整數劃分 V2

51Nod-1259-整數劃分 V2 將N分爲若干個整數的和,有多少種不同的劃分方式,例如:n = 4,{4} {1,3} {2,2} {1,1,2} {1,1,1,1},共5種。由於數據較大,輸出Mod 10^9 + 7的結果

原创 洛谷P3616 富金森林公園題解(樹狀數組)

P3616 富金森林公園 題目描述 博艾的富金森林公園裏有一個長長的富金山脈,山脈是由一塊塊巨石並列構成的,編號從1到N。每一個巨石有一個海拔高度。而這個山脈又在一個盆地中,盆地裏可能會積水,積水也有一個海拔高度,所有嚴格低於這個海拔

原创 Luogu P4115Qtree4 P2056[ZJOI2007]捉迷藏 題解

題目鏈接 [ZJOI2007]捉迷藏 P4115 Qtree4 題解 動態點分治+堆 點分樹 : 我們把分治過程中遍歷過的重心都連起來 上一層的重心連接下一層的重心 可以得到一棵新的樹 然後在這顆樹上亂搞 先對於每個點弄兩個大根堆

原创 KMP算法(C++)

http://www.cnblogs.com/c-cloud/p/3224788.html http://blog.csdn.net/power721/article/details/6132380 https://segmentfaul

原创 OI知識體系