下个月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