【刷题计划1】【poj分类转载】

----------------2018.4.10更新-----------------------
原本这只是暑假刷题计划,后来因为某些原因,自己就不是很努力的刷题,现在情况有变,so,重新继续咯~

下个月26号省赛,扣去中间实训的一周时间和几次校赛,大概只有一个月时间。

目前计划是,每天基础算法题+cf上3题,专业课也先停了,自己这段时间只想认真写题。

昨天晚上又失眠了,虽然我知道保证训练效率的关键是得休息好,但是真的睡不着,大概是焦虑吧。这一次,不想功利性把比赛得奖当做最终目的,因为这除了让我更焦虑,改变不了任何问题。

冷静下来想了这样一个问题,这次省赛,我到底要达到怎样的目标,才算是一次成功?

自己的回答是,只要这一个月,我按照计划坚持下来,就算是对自己的一个交代。

网上找了各类题集,到时候挑题来写。

【字符串】

原博客地址

字符串专题算是搞得差不多了,来大概总结一下吧。

要掌握的算法:

1、KMP算法

作用是两个串之间的匹配,核心思想是pre[i]表示串B的最长的前缀与以i为结尾的后缀相同,每次匹配失败时,从i跳到pre[i]就可以了。

2、trie树

作用是存储许多个串,核心思想是除根节点每个点表示一个字母,从根节点到每个点的路径表示一个字符串,单词节点打上标记

3、AC自动机

作用是多个串的匹配,KMP+trie树,核心思想是fail[i]表示长度最长的某个前缀是i节点所代表的字符串的一个后缀,通过fail[i]处理出ch[x][i]表示x节点加入一个i字符后转移到的节点。注意可以结合dp来考察。

4、manacher算法

作用是处理出以每个位置为中心的最长回文串长度,核心思想是记录一个最长的延伸到的地方,利用对称的思想处理出一个当前位置的起始值,之后暴力匹配,比较神奇,时间复杂度很好证明。

5、后缀数组

作用是对单个字符串后缀排序,求两个后缀的LCP,核心思想是sa数组和height数组的求法,详见论文,不再过多赘述。

6、后缀自动机

作用是对单串建立自动机,能够给接受该串的每个子串,核心思想是每个节点代表多个字符串,其中每个节点的right集合相同,记录一个fa[i]表示最小的right集合使i的right集合是它的子集,具体还是要看论文。应用更加广泛。

7、hash

作用是判断两个字符串是否相同,核心思想是……

各大OJ的字符串题目:

1、hdu2222 Keywords Search

2、hdu2896 病毒侵袭

3、hdu3065病毒侵袭持续中

4、poj2778 DNA Sequence

5、hdu2243 考研路茫茫――单词情结

6、hdu2825 Wireless Password

7、hdu2296 Ring

8、hdu2457 DNA repair

9、hdu3341 Lost's revenge

10、ZOJ3494 BCD Code

11、poj1743 Musical Theme

12、poj1816 Wild Words

13、poj2752 Milking Grid

14、poj2774 Long Long Message

15、poj3376 Finding Palindromes

16、poj3415 Common Substrings

17、poj3208 Apocalypse Someday

18、poj3261 Milk Patterns

19、poj3294 Life Forms

20、poj3576 Language Recognition

21、poj3581 Sequence

22、poj3693 Maximum repetition substring

23、hdu2471 History of Languages

24、hdu3901 Wildcard

25、bzoj1009 GT考试

26、bzoj1030 文本生成器

27、bzoj1031 字符加密

28、bzoj3530 数数

29、bzoj3670 动物园



【图论】

=============================以下是最小生成树+并查集======================================
【HDU】
1213 		How Many Tables			基础并查集★
1272 		小希的迷宫			基础并查集★
1325&&poj1308 	Is It A Tree?			基础并查集★
1856 		More is better			基础并查集★
1102 		Constructing Roads		基础最小生成树★
1232 		畅通工程			基础并查集★
1233 		还是畅通工程			基础最小生成树★
1863 		畅通工程			基础最小生成树★
1875 		畅通工程再续			基础最小生成树★
1879 		继续畅通工程			基础最小生成树★
3371    	Connect the Cities  		简单最小生成树★
1301 		Jungle Roads			基础最小生成树★
1162 		Eddy's picture			基础最小生成树★
1198 		Farm Irrigation			基础最小生成树★
1598 		find the most comfortable road	枚举+最小生成树★★
1811 		Rank of Tetris			并查集+拓扑排序★★
3926 		Hand in Hand			同构图★
3938 		Portal  			离线+并查集★★
2489    	Minimal Ratio Tree 		dfs枚举组合情况+最小生成树★
4081    	Qin Shi Huang's National Road System 最小生成树+DFS★★
4126    	Genghis Khan the Conqueror 	枚举+最小生成树+DFS(难)★★★★

1829&&poj2492 	A Bug's Life			基础种类并查集★
1558 		Segment set			计算几何+并查集★
3461 		Code Lock			并查集(有点难想到)★★
3367 		Pseudoforest			最大生成树★
2473 		Junk-Mail Filter		并查集+设立虚父节点(马甲)★★
3172 		Virtual Friends			带权并查集★
3635 		Dragon Balls			带权并查集★
3047 		Zjnu Stadium			带权并查集★
3038 		How Many Answers Are Wrong	种类并查集★★
2818 		Building Block			带权并查集★
3234 		Exclusive-OR			异或并查集(难)★★★
2121    	Ice_cream’s world II  		最小树形图(要输出根有点恶心)★★
4009    	Transfer water 			最小树形图(模板题)★
3311  		Dig The Wells		  	斯坦纳树(状压DP)(模板题)★★
4085		Peach Blossom Spring		斯坦纳树(状压DP)(有可能是森林...)★★★

2586 		How far away ?			LCA★
2874 		Connections between cities	LCA★
3486 		Interviewe			RMQ★
2888 		Check Corners			二维RMQ★
3183		A Magic Lamp			RMQ(有点难想到,有点难联系到RMQ)★★

【POJ】
1258 						最经典的MST★
1789 		Truck History 			最小生成树★
1287 		Networking 			简单★
2349 		Arctic Network			简单★
1611 		The Suspects 			并查集★
2377 						kruskal★
2524 		Ubiquitous Religions 		并查集★
2236 		Wireless Network 		并查集+计算几何★
2560 						Kruskal 并查集★
1861 						Kruskal ★
3625 						prim★
1679 - 		The Unique MST(基础)  		判断MST是否唯一★
3522 - 		Slim Span(基础)  		求一颗生成树,让最大边最小边差值最小★
2485 		Highways 			MST中的最长边★
2395 						最小生成树的最长边★
1751 		Highways 			求出方案★
POJ-1182 	食物链 				种类并查集★★
POJ 1456 	Supermarket			贪心+区间合并★
POJ-1703 					种类并查集★
POJ-1988 					种类并查集★
POJ-1733 	Parity game 			种类并查集,先要离散化一下,不影响结果★
POJ-1417 	True Liars(难) 			并查集+DP 种类并查集★★
POJ-2912 	Rochambeau(难) 			baidu的题,很不错...是食物链的加强版.判断裁判比较难想.★★★
POJ 2728 	Desert King(中等)  		最优比率生成树★★
POJ 1639 	Picnic Planning(较难) 		顶点度数有限制的最小生成树★★
POJ 3164 	Command Network(难) 		最小树形图★★

poj3723						好题!!! ★★
poj3228						好好题!!! ★★

【ZOJ】
ZOJ-3261 逆向并查集 ★★



===============================以下是最短路系列====================================
【HDU】
1548    	A strange lift			基础最短路(或bfs)★
2544    	最短路	 			基础最短路★
3790   		最短路径问题			基础最短路★
2066   		 一个人的旅行			基础最短路(多源多汇,可以建立超级源点和终点)★
2112    	HDU Today			基础最短路★
1874    	畅通工程续			基础最短路★
1217    	Arbitrage   			货币交换 Floyd (或者 Bellman-Ford 判环)★
1245    	Saving James Bond		计算几何+最短路★
1317    	XYZZY  				Bellman-Ford判环,有负权★
1535    	Invitation Cards   		有向图的来回最短路,(反向建图)★
1546    	Idiomatic Phrases Game  	最短路★
2680    	Choose the best route   	最短路★
2923    	Einbahnstrasse			最短路★
3339    	In Action  			最短路+背包★
2224    	The shortest path		双调旅行商问题★★
2807    	The Shortest Path		矩阵运算+最短路(floyd)★★
1595    	find the longest of the shortest枚举+最短路(删掉任意一条边的最长最短路)★★
3986    	Harry Potter and the Final Battle 枚举+最短路(删掉任意一条边的最长最短路)★★
1599    	find the mincost route		floyd求最小环★
1839		Delay Constrained...		二分下限+最短路(带限制最短路)★★	
3631 		Shortest Path                   Floyd插点法★★
4114		Disney's FastPass		最短路+二维状压DP(难)★★★
3832    	Earth Hour			三点连通(斯坦纳树)★
3873    	Invade the Mars			Dij变体(好题!,带限制最短路)★★★
4063 		Aircraft			几何构图+最短路★★★★

hdu4179		Difficult Routes		dis[][]开二维状态的最短路(带限制最短路)★★

1869 		六度分离 			Floyd最短路★
1385    	Minimum Transport Cost    	最短路+输出路径(输出字典序最小路径,有点恶心)★★	
1224    	free DIY Tour 			最短路+输出路径★
1142    	A Walk Through the Forest  	最短路+记忆搜索★★
1596    	find the safest road   		乘积最小的最短路★
1598    	find the most comfortable road	二分速度差+最短路(带限制最短路)★★
2722    	Here We Go(relians) Again	最短路★
2962    	Trucking  			二分+最短路(带限制最短路)★★
1690    	Bus System 			最短路★
2433    	Travel				删边+最短路之和(预处理桥边)★★★			
2363    	Cycling				二分+最短路(带限制最短路)★★
2377    	Bus Pass			最短路(寻找一个点的最长最短路最小)★★
2833    	WuKong				最短路+记忆化搜索(求两条最短路的最多公共点)★★
1688    	Sightseeing			最短次短路条数★★
3191    	How Many Paths Are There	次短路条数★★
2482    	Transit search			最短路★★★
3768 		Shopping			最短路+dfs(或最短路+状压DP)★★
3035    	War				平面图最小割(建图麻烦)★★
3870    	Catch the Theves 		平面图最小割(建图麻烦)★★
3860		Circuit Board			平面图最小割(建图麻烦)★★

【POJ】
1062 		昂贵的聘礼			竟然可以和最短路联系起来★★
1094 		Sorting It All Out		Floyd判环+拓扑排序★
1125		Stockbroker Grapevine		Floyd★
1135 		Domino Effect			最短路,比较有意思★★
1161 		Walls				最短路(图太恶心了)★★
1502 		MPI Maelstrom			Floyd★
1511    	Invitation Cards		来回最短路★
1556		The Doors  			计算几何+最短路★★
1724 		ROADS				带限制的最短路,dis[][]开二维来记录信息(或广搜)★★
1734 		Sightseeing trip		floyd最小环路径★
1797 		Heavy Transportation		二分枚举+最短路★
1847 		Tram				简单最短路★
1860		Currency Exchange		货币兑换★
1949 		Chores				反向建边,求最长路★★
2139 		Six Degrees of Cowvin Bacon	Floyd★
2240		Arbitrage			货币兑换★
2253		Frogger				二分+最短路★
2312 		坦克大战			spfa最短路本质变形-->广搜★
2387 		Til the Cows Come Home		基础最短路★
2394		Checking an Alibi		最短路★
2449		Remmarguts' Date		A*求第K短路★★
2457 		Part Acquisition		最短路 (输出路径)★★
2472 		106 miles to Chicago		乘积最短路(log一下,乘变加)★★

2502		Subway
2570 		Fiber Network floyd
3013 		圣诞树
3037		Skiing
3072 		Robot
3114 		Countries in War 		强联通+最短路
3160 		Father Christmas flymouse 	强联通+最长路
3255 		Roadblock
3259 		Wormholes			(寻找负权回路)
3268 		Silver Cow Part
3311 		Hie with the Pie 		floyd+状压
3328 		Cliff Climbing
3439 		Server Relocation
3463 		Sightseeing 			次短路条数
3159	
3521		Geometric Map			计算几何+最短路
3549		GSM phone 			计算几何+最短路
3594 		Escort of Dr. Who How
3613 		Cow Relays  			经过N条边的最短路 // floyd + 二分矩阵
3615 		Cow Hurdles
3621 		最优比率环
3635 		full tank?
3660 		传递闭包
3662 		Telephone Lines
============================以下是差分约束系列============================
【HDU】
1384 		Intervals
1529 		Cashier Employment
1531 		King
1534 		Schedule Problem
3440 		House Man
3592 		World Exhibition
3666 		THE MATRIX PROBLEM

【POJ】
1201
1275
1364
1716
2949
2983
3159
3169
3687

============================以下是二分匹配系列============================
普通匹配,多重匹配

【HDU】

1068		Girls and Boys
1150		Machine Schedule
1151		Air Raid
1179		Ollivanders: Makers of Fine Wands since 382 BC.
1281		棋盘游戏
1498		50 years, 50 colors
1507		Uncle Tom's Inherited Land*
1528		Card Game Cheater
1845		Jimmy’s Assignment
2063		过山车
2119		Matrix
2444		The Accomodation of Students
2768		Cat vs. Dog
3081		Marriage Match II
3360		National Treasures
1045		也可搜索
1350		最小路径覆盖
3118		类似二分匹配
3729
2389
1054
2819		完全匹配
1668 		二分+多重匹配
3605		多重匹配
3861		强连通+二分匹配
2236		无题II

hdu3468
hdu4185	奇偶匹配



【POJ】
1087		A Plug for UNIX
1274 		The Perfect Stall
1469		COURSES
1486 		Sorting Slides 			二分图的必须边
1548		Robots
1698		Alice's Chance
1719		Shooting Contest
1904 		King's Quest 			求二分图所有可能的匹配边
2060 		Taxi Cab Scheme 		最小路径覆盖
2112 		Optimal Milking 		二分+多重匹配
2226 		Muddy Fields 			行列的覆盖
2239 		Selecting Courses
2289 		Jamie's Contact Groups		 二分+多重匹配
2446 		Chessboard
2536 		Gopher II
2584		T-Shirt Gumbo
2594 		Treasure Exploration 		可相交最小路径覆盖
2672		Hotkeys
2724 		Purifying Machine
3020 		Antenna Placement
3041 		Asteroids 			简单行列匹配 
3189		Steady Cow Assignment 		二分+多重匹配
3207 		Ikki's Story IV - Panda's Trick
3216 		Repairing Company
3343 		Against Mammoths
3692 		Kindergarten
2771						最大独立集
============================以下是KM算法系列============================
【HDU】
2255		奔小康赚大钱
1533		Going Home
1853		Cyclic Tour
3488		Tour
3435		A new Graph Game
2426		Interesting Housing Problem
2853		Assignment
3718		Similarity
3722		Card Game
3395		Special Fish
2282		Chocolate
2813		One fihgt one
2448		Mining Station on the Sea
3315		My Brute
3523		Image copy detection

【POJ】
2195 		Going Home 			最小权值匹配
2400 		Supervisor, Supervisee 		输出所有最小权匹配
2516 		Minimum Cost 			最小权值匹配或最小费用流
3565		Ants
3686 		The Windy's 			最小权值匹配
	
============================以下是最大团&稳定婚姻系列============================
【HDU】

1530		Maximum Clique
1435		Stable Match
3585		maximum shortest distance 	二分+最大团
1522		Marriage is Stable
1914		The Stable Marriage Problem

【POJ】

1129		四色定理 着色问题
1419		最大独立集
2989		极大团
3487 		The Stable Marriage Problem 稳定婚姻
============================以下是强双联通系列============================
【HDU】
强连通:
1269  		迷宫城堡  			判断是否是一个强连通
2767		Proving Equivalences  		至少加几条边让整个图变成强连通
3836 		Equivalent Sets  		至少加几条边让整个图变成强连通
1827   		Summer Holiday  		传递的最小费用
3072    	Intelligence System  		传递的最小费用
3861		The King’s Problem 		强连通+二分匹配
3639		Hawk-and-Chicken  		强连通缩点 + 树形dp(累加子节点的总权值)
3594 		Cactus 				仙人掌图

双连通:
2242		考研路茫茫——空调教室  	双联通缩点+树形DP
2460		Network				 边双连通
3849		By Recognizing These Guys, We Find Social Networks Useful  双连通求桥
3896		Greatest TC  			双连通
4005 		The war  			边双连通

LCA:
2586		How far away ?
2874		Connections between cities
3078		Network  			LCA+排序
3830		Checkers  			二分+LCA

【POJ】
强连通:
1236		Network of Schools
2553 		The Bottom of a Graph  		好题! 找出度为0的集合
2186    	Popular Cows  			好题! 找出度为0的,其他分量都指向它的集合
2375		Cow Ski Area 			强连通
2762    	Going from u to v or from v to u?  缩点+拓扑排序
3160   		Father Christmas flymouse  	强连通+最短路
3180 		The Cow Prom  			判断有几个环, 分量中元素大于1的个数
3114		Countries in War  		强连通+最短路
3592		Instantaneous Transference  	强连通分量+最长路
1904		King's Quest  			强连通+并查集 
			
双连通:
3694 		Network  			边双连通 (同hdu2460)
3177 		Redundant Paths   		构造边双连通
3352 		Road Construction   		构造边双连通
2942 		Knights of the Round Table	 (点双连通经典题)
1515 		Street Directions 		(无向图改有向图)
1438 		One-way Traffic  		(混合图改有向图)

LCA:
1330		Nearest Common Ancestors
1470		Closest Common Ancestors
1986		Distance Queries
3417		Network
3728		The merchant  			LCA+并查集,更新询问
2763		Housewife Wind 			LCA+树状数组
============================以下是2-SAT系列============================
【HDU】
3062 		Party
1824 		Let's go home
3622 		Bomb Game
3715 		Go Deeper
1815 		Building roads
2723 		Get Luffy Out
1816 		Get Luffy Out *
1814 		Peaceful Commission
4115 		Eliminate the Conflict



【POJ】
2296 		Map Labeler
2723 		Get Luffy Out
2749  		Building roads
3207  		Ikki's Story IV - Panda's Trick
3648 		Wedding
3678 		Katu Puzzle
3683  		Priest John's Busiest Day
3905 		Perfect Election
============================以下是欧拉回路系列============================
【HDU】
1878		欧拉回路  判断
3018		Ant Trip 一笔画问题
1116
2894		兹鼓欧拉回路
1956
3472		混合欧拉

【POJ】
2513  						欧拉路
1041  		John's trip  			欧拉回路
1386 		Play on Words  			单词接龙
2230		Watchcow  			欧拉回路
2513 		Colored Sticks  		无向图欧拉路
2337 		Catenyms  			欧拉路径
1392 		Ouroboros Snake  		兹鼓欧拉回路
1780  		code
1637  						混合欧拉

【zoj】
1992
============================以下是拓扑排序系列============================
【HDU】	
1285		确定比赛名次
2094		产生冠军
2647		Reward
3342		Legal or Not
1811		Rank of Tetris  		拓扑+并查集
3231 						三维拓扑

【POJ】
1094 		Sorting It All Out  		Floyd+拓扑
2367 		Genealogical tree
3660 		Cow Contest
3687 		Labeling Balls 			神奇的拓扑
1128		Frame Stacking  		DFS版拓扑
1270		Following Orders  		拓扑+回溯
1420		Spreadsheet  			模拟拓扑
2762		Going from u to v or from v to u?  强连通+拓扑
3553		Task schedule

【DP】

动态规划(英语:Dynamic programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。

动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。 这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。

动态规划问题满足三大重要性质

最优子结构性质:如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。

子问题重叠性质:子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。

无后效性:将各阶段按照一定的次序排列好之后,对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策,而只能通过当前的这个状态。换句话说,每个状态都是过去历史的一个完整总结。这就是无后向性,又称为无后效性。

********************************************************************************************


动态规划分类有很多划分方法,网上有很多是按照状态来分,分为一维、二维、区间、树形等等。我觉得还是按功能即解决的问题的类型以及难易程度来分比较好,下面按照我自己的理解和归纳,把动态规划的分类如下:

一、简单基础dp

这类dp主要是一些状态比较容易表示,转移方程比较好想,问题比较基本常见的。主要包括递推、背包、LIS(最长递增序列),LCS(最长公共子序列),下面针对这几种类型,推荐一下比较好的学习资料和题目。

1、递推:

递推一般形式比较单一,从前往后,分类枚举就行。

简单:

hdu 2084 数塔 简单从上往下递推

hdu 2018 母牛的故事 简单递推计数

hdu 2044 一只小蜜蜂... 简单递推计数(Fibonacci)

hdu 2041 超级楼梯 Fibonacci

hdu 2050 折线分割平面 找递推公式

推荐:

CF 429B B.Working out 四个角递推

zoj 3747 Attack on Titans 带限制条件的计数递推dp

uva 10328 Coin Toss 同上题

hdu 4747 Mex 

hdu 4489 The King's Ups and Downs

hdu 4054 Number String

2、背包

经典的背包九讲:http://love-oriented.com/pack/

推荐博客:http://blog.csdn.net/woshi250hua/article/details/7636866

主要有0-1背包、完全背包、分组背包、多重背包。

简单:

hdu 2955 Robberies 01背包

hdu 1864 最大报销额 01背包

hdu 2602 Bone Collector 01背包

hdu 2844 Coins 多重背包

hdu 2159 FATE 完全背包

推荐:

woj 1537 A Stone-I  转化成背包

woj 1538 B Stone-II 转化成背包

poj 1170 Shopping Offers 状压+背包

zoj 3769 Diablo III 带限制条件的背包

zoj 3638 Fruit Ninja 背包的转化成组合数学

hdu 3092 Least common multiple 转化成完全背包问题

poj 1015 Jury Compromise 扩大区间+输出路径

poj 1112 Team Them UP 图论+背包

3、LIS

最长递增子序列,朴素的是o(n^2)算法,二分下可以写成o(nlgn):维护一个当前最优的递增序列——找到恰好大于它更新

简单:

hdu 1003 Max Sum

hdu 1087 Super Jumping!

推荐:

uva 10635 Prince and Princess LCS转化成LIS

hdu 4352 XHXJ's LIS 数位dp+LIS思想

srm div2 1000  状态压缩+LIS

poj 1239 Increasing Sequence 两次dp

4、LCS

最长公共子序列,通常o(n^2)的算法

hdu 1503 Advanced Fruits

hdu 1159 Common Subsequence

uva 111 History Grading 要先排个序

poj 1080 Human Gene Functions


二、区间dp

推荐博客:http://blog.csdn.net/woshi250hua/article/details/7969225

区间dp,一般是枚举区间,把区间分成左右两部分,然后求出左右区间再合并。

poj 1141 Brackets Sequence 括号匹配并输出方案

hdu 4745 Two Rabbits 转化成求回文串 

zoj 3541 The Last Puzzle  贪心+区间dp

poj 2955 Brackets

hdu 4283 You Are the One  常见写法

hdu 2476 String Printer 

zoj 3537 Cake

CF 149D Coloring Brackets

zoj 3469 Food Delivery


三、树形dp

比较好的博客:http://blog.csdn.net/woshi250hua/article/details/7644959

一篇论文:http://doc.baidu.com/view/f3b19d0b79563c1ec5da710e.html

树形dp是建立在树这种数据结构上的dp,一般状态比较好想,通过dfs维护从根到叶子或从叶子到根的状态转移。

hdu 4123 Bob's Race 二分+树形dp+单调队列

hdu 4514  求树的直径

poj 1655 Balancing Act 

hdu 4714 Tree2Cycle 思维

hdu 4616 Game

hdu 4126 Genghis Kehan the Conqueror MST+树形dp 比较经典

hdu 4756 Install Air Conditioning MST+树形dp 同上

hdu 3660 Alice and Bob's Trip 有点像对抗搜索

CF 337D Book of Evil  树直径的思想 思维

hdu 2196 Computer 搜两遍


四、数位dp

推荐一篇论文:http://wenku.baidu.com/view/d2414ffe04a1b0717fd5dda8.html

数位dp,主要用来解决统计满足某类特殊关系或有某些特点的区间内的数的个数,它是按位来进行计数统计的,可以保存子状态,速度较快。数位dp做多了后,
套路基本上都差不多,关键把要保存的状态给抽象出来,保存下来。

hdu 2089 不要62 简单数位dp

hdu 3709 Balanced Number 比较简单

CF 401D Roman and Numbers 状压+数位dp

hdu 4398 X mod f(x) 把模数加进状态里面

hdu 4734 F(x)  简单数位dp

hdu 3693 Math teacher's homework 思维变换的数位dp

hdu 4352 XHXJ's LIS 数位dp+LIS思想

CF 55D Beautiful Numbers  比较巧妙的数位dp

hdu 3565 Bi-peak Numbers 比较难想

CF 258B Little Elephant and Elections 数位dp+组合数学+逆元


五、概率(期望) dp

推荐博客:http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html

推荐博客:http://blog.csdn.net/woshi250hua/article/details/7912049

推荐论文:

《走进概率的世界》

《浅析竞赛中一类数学期望问题的解决方法》

《有关概率和期望问题的研究》

一般来说概率正着推,期望逆着推。有环的一般要用到高斯消元解方程。期望可以分解成多个子期望的加权和,权为子期望发生的概率,即 E(aA+bB+...) = aE(A) + bE(B) +... 

ural 1776 Anniversiry Firework 比较基础

hdu 4418 Time travel  比较经典BFS+概率dp+高斯消元

hdu 4586 Play the Dice 推公式比较水

hdu 4487 Maximum Random Walk 

jobdu 1546 迷宫问题 高斯消元+概率dp+BFS预处理

hdu 3853 LOOPS 简单概率dp

hdu 4405 Aeroplane chess 简单概率dp,比较直接

hdu 4089 Activation 比较经典

poj 2096 Collecting Bugs 题目比较难读懂

zoj 3640 Help me Escape 从后往前,比较简单

hdu 4034 Maze 经典好题,借助树的概率dp

hdu 4336 Card Collector 状态压缩+概率dp

hdu 4326 Game  这个题状态有点难抽象


六、状态压缩dp

这类问题有TSP、插头dp等。

推荐论文:http://wenku.baidu.com/view/ce445e4f767f5acfa1c7cd51.html

推荐博客:http://blog.csdn.net/sf____/article/details/15026397

推荐博客:http://www.notonlysuccess.com/index.php/plug_dp/

hdu 1693 Eat the Trees  插头dp

hdu 4568 Hunter 最短路+TSP

hdu 4539  插头dp

hdu 4529 状压dp

poj 1185 炮兵阵地

poj 2411 Mandriann's Dream 轮廓线dp

hdu 3811 Permutation

poj 1038

poj 2441

hdu 2167

hdu 4026

hdu 4281


七、数据结构优化的dp

有时尽管状态找好了,转移方程的想好了,但时间复杂度比较大,需要用数据结构进行优化。
常见的优化有二进制优化、单调队列优化、斜率优化、四边形不等式优化等。

1、二进制优化

主要是优化背包问题,背包九讲里面有介绍,比较简单,这里只附上几道题目。

hdu 1059 Diving 

hdu 1171 Big Event in Hdu

poj 1048 Follow My Magic

2、单调队列优化

推荐论文:http://wenku.baidu.com/view/4d23b4d128ea81c758f578ae.html

推荐博客:http://www.cnblogs.com/neverforget/archive/2011/10/13/ll.html

hdu 3401 Trade  

poj 3245 Sequece Partitioning 二分+单调队列优化

3、斜率优化

推荐论文:用单调性优化动态规划

推荐博客:http://www.cnblogs.com/ronaflx/archive/2011/02/05/1949278.html

hdu 3507 Print Article

poj 1260 Pearls

hdu 2829 Lawrence

hdu 2993 Max Average Problem

4、四边形不等式优化

推荐博客:http://www.cnblogs.com/ronaflx/archive/2011/03/30/1999764.html

推荐博客:http://www.cnblogs.com/zxndgv/archive/2011/08/02/2125242.html

hdu 2952 Counting Sheep

poj 1160 Post Office

hdu 3480 Division

hdu 3516 Tree Construction

hdu 2829 Lawrence



--------------2017.8.19------------------

这个暑假只是了解了一些比较简单的算法,明天呢,集训就算是结束了,虽然,距离开学还有13天,但是对于我来说,算法学习才刚刚开始,自己要达到既定的目标,还需要付出很多时间和精力,发这篇博客也是为了督促我自己去完成这个falg。

本来想的是每个专题进行练习,但是为了系统性的学习算法,自己还是决定按照大佬的poj分类进行刷题,开学再根据学校课程安排调整学习计划。

maybe,会很辛苦,但是,怎么说呢,我现在菜到不行的状态正好应了那句话:你敷衍自己一寸,生活奉还你三分。我啊~只能靠时间来缩小差距~

---------------------------------------------------------------------------------------------

呃呃呃,好尴尬的说,中间有两个月彻底被自己废掉哩,所以呢,自己是从11月才开始正式刷题滴。

初期:

一.基础算法: 
     (1)枚举. (poj1753,poj2965
     (2)贪心(poj1328,poj2109,poj2586
     (3)递归和分治法. 
     (4)递推. 
     (5)构造法.(poj3295
     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 
二.图算法: 
     (1)图的深度优先遍历和广度优先遍历. 
     (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) 

        (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) 
     (3)最小生成树算法(prim,kruskal) 
        (poj1789,poj2485,poj1258,poj3026) 
     (4)拓扑排序 (poj1094) 
     (5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020) 
     (6)最大流的增广路算法(KM算法). (poj1459,poj3436) 
三.数据结构. 
     (1)串 (poj1035,poj3080,poj1936) 
     (2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299) 
     (3)简单并查集的应用. 
     (4)哈希表和二分查找等高效查找法(数的Hash,串的Hash)    
        (poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503) 
     (5)哈夫曼树(poj3253) 
     (6)堆 
     (7)trie树(静态建树、动态建树) (poj2513) 
四.简单搜索 
     (1)深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251) 
     (2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) 
     (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 
五.动态规划 
     (1)背包问题. (poj1837,poj1276) 
     (2)型如下表的简单DP(可参考lrj的书 page149): 
       1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533) 
       2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) 
    
         (poj3176,poj1080,poj1159) 
       3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题) 
六.数学 
     (1)组合数学: 
        1.加法原理和乘法原理. 
        2.排列组合. 
        3.递推关系. 
          (POJ3252,poj1850,poj1019,poj1942) 
     (2)数论. 
        1.素数与整除问题 
        2.进制位. 
        3.同余模运算. 
          (poj2635, poj3292,poj1845,poj2115) 
     (3)计算方法. 
        1.二分法求解单调函数相关知识.(poj3273,poj3258,poj1905,poj3122) 
七.计算几何学. 
     (1)几何公式. 
     (2)叉积和点积的运用(如线段相交的判定,点到线段的距离等). (poj2031,poj1039)

     (3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交) 
         (poj1408,poj1584) 
     (4)凸包. (poj2187,poj1113)
中级:

一.基本算法: 
     (1)C++的标准模版库的应用. (poj3096,poj3007) 
     (2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706) 
二.图算法: 
     (1)差分约束系统的建立和求解. (poj1201,poj2983) 
     (2)最小费用最大流(poj2516,poj2195) 
     (3)双连通分量(poj2942) 
     (4)强连通分支及其缩点.(poj2186) 
     (5)图的割边和割点(poj3352) 
     (6)最小割模型、网络流规约(poj3308, ) 
三.数据结构. 
     (1)线段树. (poj2528,poj2828,poj2777,poj2886,poj2750) 
     (2)静态二叉检索树. (poj2482,poj2352) 
     (3)树状树组(poj1195,poj3321) 
     (4)RMQ. (poj3264,poj3368) 
     (5)并查集的高级应用. (poj1703,2492) 
     (6)KMP算法. (poj1961,poj2406) 
四.搜索 
     (1)最优化剪枝和可行性剪枝 
     (2)搜索的技巧和优化 (poj3411,poj1724) 
     (3)记忆化搜索(poj3373,poj1691) 
五.动态规划 
     (1)较为复杂的动态规划(如动态规划解特别的施行商问题等) 
         (poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034) 
     (2)记录状态的动态规划. (POJ3254,poj2411,poj1185) 
     (3)树型动态规划(poj2057,poj1947,poj2486,poj3140) 
六.数学 
     (1)组合数学: 
        1.容斥原理. 
        2.抽屉原理. 
        3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026). 
        4.递推关系和母函数.        
     (2)数学. 
        1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222) 
        2.概率问题. (poj3071,poj3440) 
        3.GCD、扩展的欧几里德(中国剩余定理) (poj3101) 
     (3)计算方法. 
        1.0/1分数规划. (poj2976) 
        2.三分法求解单峰(单谷)的极值. 
        3.矩阵法(poj3150,poj3422,poj3070) 
        4.迭代逼近(poj3301) 
     (4)随机化算法(poj3318,poj2454) 
     (5)杂题. 
         (poj1870,poj3296,poj3286,poj1095) 
七.计算几何学. 
        (1)坐标离散化. 
        (2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用). 
            (poj1765,poj1177,poj1151,poj3277,poj2280,poj3004) 
        (3)多边形的内核(半平面交)(poj3130,poj3335) 
        (4)几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429
)

高级: 
一.基本算法要求:   
      (1)代码快速写成,精简但不失风格   
          (poj2525,poj1684,poj1421,poj1048,poj2050,poj3306) 
      (2)保证正确性和高效性. poj3434 
二.图算法: 
      (1)度限制最小生成树和第K最短路. (poj1639) 
      (2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解)

         (poj3155, poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446 
      (3)最优比率生成树. (poj2728) 
      (4)最小树形图(poj3164) 
      (5)次小生成树. 
      (6)无向图、有向图的最小环    
三.数据结构.   
      (1)trie图的建立和应用. (poj2778) 
      (2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法
          (RMQ+dfs)).(poj1330) 
      (3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移
的 
          目的). (poj2823) 
      (4)左偏树(可合并堆).   
      (5)后缀树(非常有用的数据结构,也是赛区考题的热点). 
         (poj3415,poj3294) 
四.搜索   
      (1)较麻烦的搜索题目训练(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)

      (2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储
状态、双向广搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482) 
      (3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大
、可以考虑双向搜索或者是轮换搜索、IDA*算法. (poj3131,poj2870,poj2286) 
五.动态规划   
      (1)需要用数据结构优化的动态规划. 
         (poj2754,poj3378,poj3017) 
      (2)四边形不等式理论. 
      (3)较难的状态DP(poj3133) 
六.数学   
      (1)组合数学. 
        1.MoBius反演(poj2888,poj2154) 
        2.偏序关系理论. 
      (2)博奕论. 
        1.极大极小过程(poj3317,poj1085) 
        2.Nim问题. 
七.计算几何学.   
      (1)半平面求交(poj3384,poj2540) 
      (2)可视图的建立(poj2966) 
      (3)点集最小圆覆盖. 
      (4)对踵点(poj2079) 
      八.综合题. 

      (poj3109,poj1478,poj1462,poj2729,poj2048,poj3336,poj3315,poj2148,poj1263





猜你喜欢

转载自blog.csdn.net/hello_sheep/article/details/77409375
今日推荐