转载请注明出处:http://www.cnblogs.com/TSHugh/p/8858805.htmlhtml
Prepared:算法
(无notes的波兰题目的notes见个人波兰题目补全计划)
BZOJ #3831.[Poi2014]Little Bird
BZOJ #2091.[Poi2010]The Minima Game
BZOJ #4385.[POI2015]Wilcze doły
BZOJ #4379.[POI2015]Modernizacja autostrady
BZOJ #3830.[Poi2014]Freight
LOJ #2450.「POI2010」绵羊 Sheep
BZOJ #2216.[Poi2011]Lightning Conductor
BZOJ #3711.[PA2014]Druzyny
BZOJ #3717.[PA2014]Pakowanie
BZOJ #3746.[POI2015]Czarnoksiężnicy okrągłego stołu
BZOJ #1435.[ZJOI2009]多米诺骨牌 插头dp+容斥
notes:
轮廓线有妙用!
除了插头都想到了……
个人感受:
轮廓线的引入虽然会在必定程度上增多状态数,可是会在很大程度上减小转移的复杂度,因此这个东西有些时候是有很是的妙用的,尤为是在网格图上.
这道题分板块计算答案的思路仍是比较好的吧.数据结构
Preparing:学习
BZOJ #1138.[POI2009]Baj 最短回文路
COGS #221.[NOIP2008] 双栈排序
LOJ #2448.「POI2010」铁路 Railway
BZOJ #3872.[Poi2014]Ant colony
BZOJ #2794.[Poi2012]Cloakroom
BZOJ #2803.[Poi2012]Prefixuffix
BZOJ #2526.[Poi2011]Inspection优化
Dealt:设计
CodeForces #814E.An unavoidable detour for home 动态规划
notes:
我打的是O(n^5)的dp,主要仍是分析性质,分析状态和转移
UOJ #37.【清华集训2014】主旋律 状压dp+容斥
note:
作不出来……
一开始只想到直接算SCC的,走到黑也没有去想反状态……因此不要走到黑也不回头啊……
想到反状态以后,仍是要想到如何容斥,就是说如何计算不是scc的方案数.因为不是scc的图缩点以后必定存在入度为0的点,因此能够容斥入度为0的点,这个时候咱们能够把入度为0的scc的个数做为容斥的对象.这个时候咱们就有了3^n的作法,固然这里面还须要有些细节以及其余的小套路.htm
Dealing:对象
LOJ #6094.「Codeforces Round #418」归乡迷途
UOJ #348blog
Notes:排序
就作了几天的dp,因此说总结不是很全面,也不必定都是对的.技巧篇: I.决策单调性的利用.决策单调性是dp优化的重要一环,利用它的方式能够是数形结合(eg:斜率优化等)、数据结构(单调栈、单调队列等)、分治等.固然,单调性也分为不一样的几种,好比:决策点单调、关键点单调、决策方式单调(这已经包含了斜率的单调)等.这种数学化的思惟是dp学习者必须掌握的. 如何发现单调性:内心有单调性这种东西,再加上细心观察或者数学分析. II.猜想结论.我也不知道这样作对不对,只是知道这样作有时候颇有效. III.轮廓线的运用.这在网格图中用的比较多,感受起来是牺牲较少状态数来换取较优的转移,这每每有着较好的效果. IV.数学角度无脑优化.先写出转移来,而后数学化以后利用数学无脑优化,彷佛在有些题中很好用. V.网格图分板块计数. VI.记忆化搜索以减小代码复杂度. VII.手玩.手玩样例、手玩转移等都会对于解决问题有必定的帮助. VIII.枚举二进制位转为枚举二进制有效位.这会除个2,有时候就是从T到A的区别. IX.按位搞事情. X.二分&wqs二分&三分. XI.图的dp,转移的时候枚举与本身联通的点集.思想篇: I.问题模型的转化.这一点的重要性是无疑的,不少的算法题都须要用到这种思想,这种思想在一些题目中能够看做是部分分的实质,并且他在解决问题中的运用直接决定了算法的优劣. II.容斥思想.这种利用组合计数原理来下降问题困难程度的方法在许多题目里也是不可或缺的. III.补集转化.在原问题难以解决的时候考虑解决与原问题互补的反问题是一种不错的思路. IV.二元组计数.把平方计数转化为二元组计数,挺通用且常见的. V.分析问题性质.eg:图的性质、发现log或者根号等. VI.分析构造问题的构造过程.这在构造问题中挺有效的. VII.无用状态的舍弃.这不只仅是常数或者剪枝,有时候舍弃掉无用状态会对状态和转移起到不可小觑的优化与启发. VIII.多边形划分与区间的联系. IX.最优子结构性质.搞清楚这个东西对于状态与转移的设计有帮助的. X.差分思想. XI.重构树思想.这个东西能够把一些看似分治的东西搞成树形dp,至少如今我是这么以为的.重点篇: I.dp的状态设计.这真的很关键,每每状态的设计直接决定了程序运行效率,并且状态的设计,不仅是在dp中很重要,他在其余算法领域也是十分关键的,这是一种思想,一种思惟,在有些难题的作法中,最能惊艳到你的就是状态的设计. 有关状态设计的思想: 1.转化问题模型. 2.结合构造问题的构造过程. 3.分析问题性质(eg:图的性质、发现log或者根号). 4.分析最优子结构性质. 5.增量构造. 6.差分思想. II.dp的转移设计.转移每每创建在状态设计的基础之上,是决定dp题目程序运行效率的另外一关键因素,不过有些时候,巧妙的转移对于状态的设计与优化是有启发做用的,固然,有的时候,转移须要一些优化. 有关转移设计的思想: 1.结合状态. 2.数学角度(eg:组合数学等). 3.手玩. 4.分析最优子结构性质. 5.增量构造. 6.差分思想. 转移的优化: 1.单调性. 2.数学(eg:数形结合、四边形优化等). 3.数据结构. 4.分治. 5.问题性质(eg:根号、log等). 6.矩阵乘法. 7.差分思想. 8.有限状态自动机. III.发觉dp.有个别的题目很难发觉他是dp,要是说什么题是dp什么不是,这对于我来讲还真不简单,那么作题的时候记着这玩意就行了吧.