有很多题是在多个板块内出现了的,所以看起来多,实际上是垃圾文章。
一个好的状态定义,一定有这样的特点:它注重于通性,而非具体情况。
譬如说,求方案数量,很多方案将会被保存在同一个状态里。为什么?因为这些方案在一些地方上是一样的,而且这些地方才是重要的地方,这些地方才会影响后续的行动,这些地方是其精髓。
例1.1.1.1
N e w Y e a r a n d A r b i t r a r y A r r a n g e m e n t \tt{New\; Year\; and\; Arbitrary\; Arrangement} NewYearandArbitraryArrangement、 A N D S e g m e n t s \tt AND\; Segments ANDSegments
例1.1.1.2
CF1151F Sonya and Informatics
当然,肆无忌惮地舍弃掉大量信息,是不可取的。你得保留必要的信息。
例1.1.1.3
战争调度、 C o n n e c t i n g V e r t i c e s \tt Connecting\; Vertices ConnectingVertices
对于一些附加了“权值”的定义,可能需要一些特殊技巧。
当然,还是那句话,这些东西的本质都是 让影响权值的东西尽量少。
例1.1.1.4
小奇探险、命运
例1.1.1.5
E m i y a \tt{Emiya} Emiya 家的饭
例1.1.1.6
简单的 n i m \tt{nim} nim 游戏
不要把很多步骤分开,导致状态数太多。有时候,就要一次性多考虑点东西。
例1.1.1.7
病毒研究
有的时候,你不得不强制规定一些情况,来便于转移。也就是说,你规定 g ( i ) = f ( i , x i ) g(i)=f(i,x_i) g(i)=f(i,xi) ,以此来减少状态的维度。这往往在试图使用滚动数组时会被自然发现。
例1.1.2.1
划分、小奇探险
更多时候,你让一些状态包揽下原本不属于它的方案。这会使你更快的转移。
例1.1.2.2
奶牛家谱
例1.1.2.3
分裂
你还是得结合该问题的性质去思考一个问题。当方案有特殊性质时,你应该去使用它们。
例1.1.3.1
M a j a \tt{Maja} Maja、 V a s y a a n d M a x i m u m M a t c h i n g \tt Vasya\; and\; Maximum\; Matching VasyaandMaximumMatching
例1.1.3.2
说无可说、 P a r t y \tt Party Party
例1.1.3.3
C u t l e t \tt Cutlet Cutlet(或许应该放在 1.4.Unbelievable!
里面?)
分类讨论真的很好用。仅仅在互不相干时可行。
例1.1.3.4
宝牌一大堆、皮配
例1.1.3.5
G a m e o f t h e R o w s \tt{Game\; of\; the\; Rows} GameoftheRows
例1.1.3.6
A r p a a n d a l i s t o f n u m b e r s \tt{Arpa\; and\; a\; list\; of\; numbers} Arpaandalistofnumbers
有的值很小,就把它放进状态里。不要陷入思维定式。
例1.1.3.7
CF744C Hongcow Buys a Deck of Cards
配合单调队列(单调栈)使用。经典的滑窗、斜率优化皆为此类。
再或者,配合数据结构使用。
例1.2.1
货物分组、 M e m o r y a n d C a s i n o s \tt{Memory\; and\; Casinos} MemoryandCasinos
或者是长链剖分(或滚动数组)、树上启发式合并(或 d s u o n t r e e \tt dsu\; on\; tree dsuontree )一类的。
例1.2.2
小奇的旅行计划
例1.2.3
洛谷P5291 [十二省联考2019]希望
如果 转移不具有时效性,往往可以贪心,或者钦定一部分元素。
例1.2.4
愤怒的小鸟
排序后,再递推,往往有奇效。用来满足方案的限制条件。
例1.2.5
洛谷P2132 小Z的队伍排列、 R o t a t e C o l u m n s ( h a r d v e r s i o n ) \tt Rotate\; Columns\; (hard\; version) RotateColumns(hardversion)
当然咯,矩乘快速幂、卷积(生成函数)等,就是必备功课了。
例1.2.6
魔法石
例1.2.7
序列计数
例1.2.8
逼死强迫症
例1.2.9
L a d i e s ′ S h o p \tt{Ladies'\; Shop} Ladies′Shop
例1.2.10
T h e C h i l d a n d B i n a r y T r e e \tt{The\; Child\; and\; Binary\; Tree} TheChildandBinaryTree
转移的时候,可以枚举某个不会引起算重的值。比如 max \max max 等。
例1.2.11
泳池(同时也是多项式优化)
例1.2.12
B o r d e r l e s s \tt{Borderless} Borderless
如果转移有环,可以考虑转化为图论,用最短路求解。
例1.2.13
T h e G r e a t M i x i n g \tt The\; Great\; Mixing TheGreatMixing
相信 d p \tt{dp} dp ,它是万能的!顶多会超时。
最重要的是发现 独立子问题,最优子结构太好找了,不谈。
例1.3.1
T r a i n T r a c k i n g \tt{Train\; Tracking} TrainTracking
例1.3.2
守卫
例1.3.3
舞会、 L o g i c a l E x p r e s s i o n \tt Logical\; Expression LogicalExpression
例1.3.4
B o r d e r l e s s \tt{Borderless} Borderless
例1.3.5
M o o n C r a t e r s \tt Moon\; Craters MoonCraters
例1.3.6
S h o r t C o l o r f u l S t r i p \tt Short\; Colorful\; Strip ShortColorfulStrip
没必要一次 d p \tt dp dp 解决所有问题。
例1.3.7
A r r a y S h r i n k i n g \tt Array\; Shrinking ArrayShrinking
这要是人类想出来的,我吃 s h i \tt shi shi 好嘛!这里的 s h i \tt shi shi 是食物的食,而不是 。
例1.4.1
机器人高尔夫球赛
例1.4.2
BZOJ4899 记忆的轮廓
例1.4.3
数字
有些不是动态规划的,我懒得改动了,也放这里。
例1.4.4
T a b l e \tt Table Table
你只要可以放心的说:“把原有的替换,一定不会更差”,你就可以上了。
例2.1.1
推销员、 C u r f e w \tt Curfew Curfew
例2.1.2
三人组舞
例2.1.3
扭动的回文串
或者说,你证明“不影响以后操作”即可。
例2.1.4
春节十二响
有时候最好感性理解一下。当然,如果用归纳法证明出来了,那就是极好的。
例2.1.5
划分
越紧急越优先处理。分配优先级应该是贪心范畴?
例2.1.6
D e a d L e e \tt DeadLee DeadLee
至今,我觉得最神奇的两个贪心就是:
例2.2.1
蔬菜
当然咯,说到别的模型,肯定少不了 H a f f m a n \tt{Haffman} Haffman 树(藏在此博客中)。
暴力解方程并不是一件和听上去一样简单的事情。
例3.1.1
T h e L u c k i e s t N u m b e r \tt{The\; Luckiest\; Number} TheLuckiestNumber
例3.1.2
P e r i o d O f N u m b e r \tt{Period\; Of\; Number} PeriodOfNumber
例3.1.3
糖果传递
例3.1.4
命运
例3.1.5
C o n t a c t A T C \tt{Contact\; ATC} ContactATC
例3.2.1
等比数列三角形
例3.2.2
幂和
例3.2.3
泰勒板题?
例3.2.4
一个简单的询问
例3.2.5
矩阵
例3.2.6
T r e e \tt{Tree} Tree
例3.2.7
数三角形、洛谷P3271 [JLOI2016]方
例3.2.8
魔法石
例3.2.9
j z p t a b \tt{jzptab} jzptab
例3.2.10
树、 S a s h a a n d A r r a y \tt Sasha\; and\; Array SashaandArray
往往是优化 d p \tt{dp} dp 而写的生成函数。见 1.2.状态转移
。
其他情况,全是板子,很难想到。无非就是:
例3.3.1
字符串匹配
例3.3.2
巧克力!
例3.3.3
歌唱王国
去重,一直是重大课题。可以考虑 以某种特定的方式将问题拆分(往往适用于动态规划)。
例3.4.1
鸽子的糖
其实,拆分的本质是重组,重组的本质是 生成一组解。
例3.4.2
简单的序列问题
还有一些模板。背下来吧!
例3.4.3
砖块垒梯
例3.4.4
坏天平
往往是这样的情形:固定某个值,很难做;限制其范围,很好做。
例3.5.1
和谐相处
例3.5.2
C a r d C o l l e c t o r \tt{Card\; Collector} CardCollector
例3.5.3
洛谷P1450 [HAOI2008]硬币购物
例3.5.4
小星星
例3.5.5
矩阵填数
短短四字,个中奥妙,意蕴深长:正难则反。
例3.5.6
序列计数
见到“最小值最大”“最大值最小”就应该注意了。
例4.1.1
J O I O I \tt{JOIOI} JOIOI 王国
例4.1.2
小屁孩领糖吃
有关连通性的问题,可以考虑并查集。
例4.1.3
裁剪线
考虑前 k k k 大的巴拉巴拉,可以用二分法。
例4.1.4
异或粽子
看上去,题目要你求解 x x x ,其实, x x x 本质上就是 y y y ,或者等价于 y y y 。特别是转化为图论。
例4.2.1
算术天才 ⑨ ⑨ ⑨与等差数列
例4.2.2
S o r t i t o u t \tt{Sort\; it\; out} Sortitout
例4.2.3
城市地铁规划
例4.2.4
序列
例4.2.5
小 w w w 的魔术扑克
例4.2.6
劈配
例4.2.7
I I I D X \tt{IIIDX} IIIDX
例4.2.8
庞氏骗局
例4.2.9
B e y o n d \tt{Beyond} Beyond
例4.2.10
七夕祭
例4.2.11
G a m e \tt{Game} Game
例4.2.12
如厕计划
例4.2.13
M a f i a \tt{Mafia} Mafia
例4.2.14
M a x i m u m M a t c h i n g \tt{Maximum\; Matching} MaximumMatching
例4.2.15
F r e d a \tt{Freda} Freda 的迷宫
例4.2.16
M a g i c M a t r i x \tt Magic\; Matrix MagicMatrix
例4.2.17
R o o t e r ′ s S o n g \tt{Rooter's\; Song} Rooter′sSong
例4.2.18
舞会
例4.2.19
T r u c k s a n d C i t i e s \tt Trucks\; and\; Cities TrucksandCities
例4.2.20
S h o r t C o l o r f u l S t r i p \tt Short\; Colorful\; Strip ShortColorfulStrip
你知道了另一个东西,可以快速推出要求的东西。尽管这两个东西可能看上去毫无干系。
例4.3.1
校长的障碍赛
例4.3.2
A r r a y S h r i n k i n g \tt Array\; Shrinking ArrayShrinking
当可行方案(最优方案)一定具有某种特性(单调性……)的时候,千万要注意。
例4.4.1
排列
例4.4.2
T h e C o w G a t h e r i n g \tt{The\; Cow\; Gathering} TheCowGathering
例4.4.3
道路设计
例4.4.4
划分
例4.4.5
小凸玩密室
例4.4.6
冒泡排序
例4.4.7
M a x i m u m M a t c h i n g \tt{Maximum\; Matching} MaximumMatching
例4.4.8
M a x i m i z e ! \tt{Maximize!} Maximize!
例4.4.9
H a p p y L i n e \tt Happy\; Line HappyLine
例4.4.10
M a z e 1 D \tt Maze\; 1D Maze1D
例4.4.11
S i m p l e S k e w n e s s \tt Simple\; Skewness SimpleSkewness
例4.4.12
V l a d i k a n d c a r d s \tt Vladik\; and\; cards Vladikandcards
明明本质就是另一个问题,但时间复杂度不能通过,为什么?因为它是特殊化的情况。在最小生成树问题中尤甚。显然,我们要去发掘其性质。
例4.5.1
御神渡
例4.5.2
新年的繁荣
堆里面的元素要尽量的少,才能减少复杂度。这要求我们,“在堆外”比较方案。
例5.1
奇怪的厨师
例5.2
异或粽子
或者是 避免重复的元素。
例5.3
最优卡组
可以枚举 l c a lca lca (即,点分治)、枚举一条必经边(即,边分治)。或者直接树链剖分。
例6.1.1
路径计数机
例6.1.2
简单的树上问题
例6.1.3
垃圾分类
树上的容斥(尤其是“方案只可能为连通块”的情况),可以用 ∣ V ∣ − ∣ E ∣ = 1 |V|-|E|=1 ∣V∣−∣E∣=1 这一招。
例6.2.1
洛谷P5291 [十二省联考2019]希望
只关心两两大小关系 或者 只需要知道极少的信息就可得到解,而数据量少,可以考虑离散化。
例7.1.1
矩阵填数
例7.2.1
旅行者
例7.3.1
信竞就是修电脑
例7.3.2
扭动的回文串
例7.4.1
英语危机
例7.4.2
神 J J J 上树
例7.4.3
线段树
例7.5.1
序列
例7.5.2
下雨天
例7.5.3
路由表
例7.5.4
洪流
例7.5.5
稻草人
比如有 n n n 个数字,我们要枚举 n n n 个数字,我们有另一个方案:枚举值。
例7.6.1
CF662C Binary Table
例7.6.2
洛谷P3704 [SDOI2017]数字表格
最近发现部分枚举的题不少,还是单独拿出来写一写。
比较经典的名号是折半搜索。其实远不止此类。
例7.7.1
B e a u t i f u l R e c t a n g l e \tt Beautiful\; Rectangle BeautifulRectangle
例7.7.2
CF799E Aquarium decoration
例7.7.3
CF620D Professor GukiZ and Two Arrays
例7.7.4
CF1006F Xor-Paths
例7.7.5
CF799D Field expansion
例7.7.6
S e l l i n g S o u v e n i r s \tt Selling\; Souvenirs SellingSouvenirs
例7.7.7
S i m p l e S k e w n e s s \tt Simple\; Skewness SimpleSkewness
例7.7.8
R e s t o r e t h e P e r m u t a t i o n b y S o r t e d S e g m e n t s \tt Restore\; the\; Permutation\; by\; Sorted\; Segments RestorethePermutationbySortedSegments
例7.7.9
D e v e l o p i n g G a m e \tt Developing\; Game DevelopingGame
神奇的技巧!比如,将某个贡献放在一个对象上,或者将一个对象上的贡献拆成多个。
例7.8.1
旧词
例7.8.2
洛谷P6622 [省选联考 2020 A/B 卷] 信号传递
例7.8.3
J e f f a n d P e r m u t a t i o n \tt Jeff\; and\; Permutation JeffandPermutation
构造是很神奇的。很神奇。想的到,简单的一批;想不到,我带你们打。
首先生成一个解(或者,只满足部分条件),然后使其不断地更优(或者,逼近其他条件)。
例8.1.1
M a t h \tt{Math} Math
例8.1.2
M a h m o u d a n d E h a b a n d t h e x o r \tt{Mahmoud\; and\; Ehab\; and\; the\; xor} MahmoudandEhabandthexor
例8.1.3
挑战 N P − H a r d {\tt NP}\tt{-}{\tt Hard} NP−Hard
取一个特值,马上简单很多。往往是因为这里可以作为 突破口。
例8.2.1
C o n g r u e n c e E q u a t i o n \tt{Congruence\; Equation} CongruenceEquation
例8.2.2
F i v e D i m e n s i o n a l P o i n t s \tt{Five\; Dimensional\; Points} FiveDimensionalPoints
例8.2.3
S p a c e I s a a c \tt{Space\; Isaac} SpaceIsaac
例8.2.4
R e s t o r e A r r a y \tt Restore\; Array RestoreArray
求什么就来什么。往往想不到。
例8.3.1
T h e h a t \tt{The\; hat} Thehat
例8.3.2
D o w n o r R i g h t \tt{Down\; or\; Right} DownorRight
例8.3.3
E n c h a n t e d A r t i f a c t \tt Enchanted\; Artifact EnchantedArtifact
例8.3.4
G u e s s T h e R o o t \tt Guess \;The \;Root GuessTheRoot
例8.3.5
J z z h u a n d A p p l e s \tt Jzzhu\; and\; Apples JzzhuandApples
例8.3.6
L i t t l e P o n y a n d S u m m e r S u n C e l e b r a t i o n \tt Little\; Pony\; and\; Summer\; Sun\; Celebration LittlePonyandSummerSunCelebration
例8.3.7
R e s t o r e t h e P e r m u t a t i o n b y S o r t e d S e g m e n t s \tt Restore\; the\; Permutation\; by\; Sorted\; Segments RestorethePermutationbySortedSegments
例8.3.8
CF798D Mike and distribution
那种用白框框框起来的,就是咕咕咕了的博客……
A l w a y s T o B e C o n t i n u e d … Always\quad To\quad Be\quad Continued\quad \dots AlwaysToBeContinued…
很久没更新了。感觉自己好弱,要提前退役了。真是糟糕。
大刀阔斧地对此博客进行修改。差点把自己榨干。
但是有了一大创举:增加了 更新日志
板块,来观察自己的弱小。
为使更新日志不至于过长,只在进行大改动的时候(尤其是加入新版块)才写更新日志。
补充鸽了的博客,就不占地方了。然而这个更新本身也不是大更新啊。
做了几道构造的题,比较新奇。交互题。
所以加入了 8.构造
板块,希望以后不会一脸懵逼。
从今天开始可能要断更了。教练并不允许我花时间总结。我能做的就是切题。
希望有一天,在我 O I \tt OI OI 路结束的时候,我看到这篇博客,心中有敬畏之情。
没有什么话是不能真香的。如果有,那一定是“这句话是谎话”一类的逻辑怪圈。
所以小蒟蒻 J Z M \tt JZM JZM 开始继续努力啦!