学习通过递推法或公式法求组合数 C(n, m)

递推求组合数


  • 递推求组合数

    1、组合数中有 Cnm=Cn1m1+Cn1mC_n^m = C_{n-1}^{m-1} + C_{n-1}^m 。其中 CnmC_n^m 意为从 nn 个元素中选出 mm 个元素有多少种不同组合,其总的可能可划分为组合中选了第一个组合中没选第一个两种。如果组合中选了第一个,那么剩下的方案数还有 Cn1m1C_{n-1}^{m-1} 种(从剩余元素中选 m1m-1 个);如果组合中没选第一个,那么剩下的组合中还有 Cn1mC_{n-1}^m 种;这两种结果互斥,因此相加便可得到总的方案
    2、这种方法运用了递推DP的思想,上面的等式状态转移方程。其中,CnmC_n^m新状态,通过方程将其转移为两个老状态的和。此外,需要确定起始点边界起始点Ci0=1C_i^0 = 1 (从任意多的元素中选 00 个,有 11 种方案——不选);边界CijC_i^j (其中 0ji0 \leq j \leq iini \leq n)

阅读更多
C++数学组合数

学习基于点的 Prim 最小生成树和基于边的 Kruskal 最小生成树

Prim 最小生成树(朴素)


  • 生成树 与 MST

    1、在无向连通图中,找出一个节点最多子连通图(有 nn 个点,n1n-1 条边),这样的子连通图一定是,称为生成树最小生成树指各边权值之和最小生成树,称为 MST(Minimum Spanning Tree)
    2、如下图,便是一幅无向连通图,该图的最小生成树为图中红色所示子连通图(有 55 个点,44 条边),其权值和为 1010
    3、对于最小生成树的生成,可以通过基于点的 Prim 最小生成树基于边的 Kruskal 最小生成树完成

阅读更多
C++PrimKruskal

学习 Dijkstra 单源带权最短路,Floyd 全源最短路,Bellman-Ford 单源负权最短路及其队列优化的 SPFA,Johnson 全源负权最短路

Dijkstra 单源带权(朴素)


  • Dijkstra 朴素算法

    1、最短路 1:给定 nn 个点 mm 条边的有向图(n103,m105n \leq 10^3, m \leq 10^5),输出11nn 的最短距离。对于 mm 条边,每次输入 uvwu、v、w ,表示存在一条uuvv 的权值为 ww有向边。如果不存在路径,输出 1-1
    2、先前在图与回溯中介绍过无权最短路,现在有了权值,需要做一个结构体保存。Dijkstra还使用一个数组 d[]d[]d[i]d[i] 表示从起点 ststii 的最短距离
    3、Dijkstra 思路如下图:起始时,建图,标记所有 d[i]d[i]\infty,以 11 为起点,向外走一层将经过的边松弛(用边的权值更新所到点的 d[i]d[i]d[i]d[i] 取较小值);接下来,比较得到最小的 d[i]d[i]以该点为当前起点(图中为点 22),先前的点已经可以忽略,继续向外走一层将经过的边松弛(注意,d[3]d[3] 取较小值更新为 33);以此类推,44 为当前起点发现44 没有出点返回33 为当前起点,走到终点,更新 d[5]d[5]66,所以最短路66
    4、该算法结合了贪心DP的思想,每个点只拓展一次,且拓展时已为最短距离

阅读更多
C++DijkstraFloydBellman-FordSPFAJohnson

学习并查集这种数据结构,进行集合的存储、合并与查找,解决连通性问题。学习启发式合并,可撤销并查集,带权并查集

并查集


  • 并查集

    1、并查集是一种支持合并和查询操作集合形式的数据结构,它支持两个集合的合并,并可以查询点与点之间连通关系
    2、并查集只需要一个数组 pre[]pre[] 存储点的前导点(父节点),在初始化pre[i]=ipre[i] = i ,表示点与自己连通,是单独的连通块,该功能由 init()init() 函数完成。并查集中还需要一个函数 root(u)root(u) ,该操作将找到uu 所属的连通块(的根节点)。该函数将递归查找 uu 的父节点,直至找到根节点
    3、对于两个点 uuvv合并操作,只需要将 uuvv 所属的连通块的其中一个根指向另一个根,即 pre[root(u)]=root(v)pre[root(u)] = root(v) ;对于两个点 uuvv查询操作,只需要判断 uuvv 所属的连通块的根是否相同
    4、但前述 root(u)root(u) 函数的朴素算法每次都需要查找一整条父节点链,效率太低,可以通过路径压缩优化程序: pre[u] = (pre[u] == u ? u : root(pre[u])),这样同一连通块第一次查找后每个节点都将直接指向当前根节点,提高以后查找的效率,时间复杂度接近 O(1)O(1)

阅读更多
C++并查集可撤销并查集带权并查集

学习树状数组,学习区间查询、单点修改和区间修改操作,使用树状数组来维护区间和。学习ST表处理静态区间最值问题

树状数组


  • 树状数组

    1、树状数组常用于维护区间和,有以下操作:单点修改 O(logn)O(\log n)区间修改 O(logn)O(\log n)区间查询 O(logn)O(\log n)
    2、树状数组结构如下图,注意树状数组中一定不能用下标 00T[i]T[i] 所存的值为管辖区间的和T[i]T[i] 所覆盖的管辖区间[ilowbit(i)+1,i][i - lowbit(i) + 1, i]管辖区间长度lowbit(i)lowbit(i)
    3、lowbit(i)lowbit(i) 表示 ii 的二进制只保留最后一位 11 的结果(例如二进制 11011001101100 只保留后三位变为 100100),公式为 lowbit(x)=xxlowbit(x) = x \land -x

阅读更多
C++树状数组ST表

学习并使用单调栈、单调队列。单调栈常解决距离最近的较大较小值问题,单调队列常用于解决滑动窗口问题及优化DP

单调栈


  • 单调栈

    1、在的基础上,如果保持栈内元素有序的,则称为单调栈,分为单调递增栈单调递减栈
    2、通常单调栈主要用于求位置最近更大值更小值,我们将在具体样例中分析

阅读更多
C++单调栈单调队列

贪心算法是十分常见的算法,一般写法简单,但正确性难以证明,比较感性

贪心算法


  • 适用前提

    1、简言之:可以找到一个局部最优解;可以从局部最优解推广到全局最优解
    2、严谨地说,两个条件分别是最优子结构贪心选择性质
    3、一般来说,贪心法往往是将某个东西排序,或者用(优先队列)等数据结构,每一步都取局部最优解,进而得到全局最优解

阅读更多
C++贪心

入门图这种数据结构,学习图的存储,学习 BFS、DFS 进行遍历搜索,学习回溯和剪枝,无权最短路

图的存储


  • 邻接表

    1、在计算机中,图的存储方式多种,最常用的是邻接表邻接矩阵邻接矩阵由于适用范围很小,故一般不考虑这种写法
    2、出度:如下图便是一幅有向图,其中一个节点指向的其他节点称为这个节点的出度指向出度节点的路径称为这个节点的出边。如下图中 225511出度
    3、邻接表:就是将一个点的所有出点(邻接点)保存在一个数组中;拓展的过程,也就是遍历这个数组的过程。这个数组我们称为邻接表

阅读更多
C++DFSBFS回溯
  1. 1 夏天,再见 暮色 / 诗岸
  2. 2 流霰(星尘Infinity Version) 旅行的蜗牛 / 星尘
  3. 3 巫山云(星尘Infinity Version) 旅行的蜗牛 / 星尘
  4. 4 月巷 星葵77 / 乐正绫
  5. 5 东京不太热 Z新豪 / 洛天依Official
  6. 6 藏蓝-(绫) 残杨如血
  7. 7 碎梦(short ver.) COP / 乐正绫
  8. 8 旧时约 WOVOP / 乐正绫
  9. 9 听雨(AI) WOVOP / 洛天依
  10. 10 淋完这场雨就忘记你吧 WOVOP / 洛天依
  11. 11 啥啊 星葵77 / 洛天依Official
  12. 12 夏霞 (Acoustic ver.) あたらよ
  13. 13 DROP 美波
  14. 14 アイスクリーム 花譜
  15. 15 それを世界と言うんだね 花譜
  16. 16 it's 6pm but I miss u already. bbbluelee / Furyl / Siren
  17. 17 下一个拥抱 (past times) 艾纳德 / Diorbin
  18. 18 鲸歌(Cover 萨满乐队) 陈亮 宋依凡
  19. 19 漫步 UnicornPhantom
  20. 20 独角 UnicornPhantom
  21. 21 青空 THE ROLLING GIRLS
  22. 22 夕暮れ(カバー) THE ROLLING GIRLS
  23. 23 Polaris Asia D / JAMMERC
  24. 24 Seasons Rival / Cadmium / Harley Bird
  25. 25 Miracle Tiborg
  26. 26 Dirty Paws - 电影《白日梦想家》插曲 Of Monsters And Men
  27. 27 Stay Alive - 电影《白日梦想家》插曲 José González
  28. 28 Can We Kiss Forever? Kina / Adriana Proenza
  29. 29 小孩小孩 刷牙 / ilem
  30. 30 白鸟过河滩 洛天依 / ilem
  31. 31 Wings of Piano V.K克
  32. 32 Daylight Seredris
  33. 33 第105天 Pianoboy高至豪
  34. 34 De Ortu Solis Charun
  35. 35 Long Journey JINBAO
  36. 36 Welcome Home Radical Face
  37. 37 What U Do Wild Culture / Shel Bee
  38. 38 花と水飴、最終電車 n-buna / 初音ミク
  39. 39 ハレハレヤ-朗朗晴天 鹿小丸
  40. 40 大神慧 / 十七草
  41. 41 Antisocial BEAUZ / Heather Sommer
  42. 42 Void Kirara Magic
  43. 43 Freefall 暴君de
  44. 44 Carousel DEAMN
  45. 45 17さいのうた。 『ユイカ』
  46. 46 ただ声一つ ロクデナシ
  47. 47 懒人 三无MarBlue
  48. 48 An Old Song MoreanP
  49. 49 雨道 Otokaze
  50. 50 夏恋 Otokaze
  51. 51 Cold Winter July
  52. 52 Where are you AniFace
  53. 53 青空 Candy_Wind
  54. 54 Feeling The Rain MoreanP
  55. 55 森林 灰澈
  56. 56 Umbrella Matte / Ember Island
  57. 57 说书人 暗杠 / 寅子
  58. 58 听书 暗杠 / 寅子
  59. 59 神のまにまに 初音ミク / 鏡音リン / GUMI / れるりり
  60. 60 ふわふわ時間 放課後ティータイム
  61. 61 朝焼けのスターマイン 今井麻美
  62. 62 鼓動 カグラナナ
  63. 63 In Your Eyes DG812
  64. 64 YUMEND MYUKKE.
  65. 65 RyAL-All I know Champer
  66. 66 “Fall Silent” Game Tape
  67. 67 4038 JuggShots_RADI8 / 夏璃夜 / Reggie Yang / RADI8
  68. 68 Outerspace BEAUZ
  69. 69 Bring Me Back Miles Away
  70. 70 Starry Skies The Darkmaker / GY
  71. 71 Way To You Gareth Emery
  72. 72 1984 Forwe兰斯 / WERECORDS
  73. 73 Every Day VESRIX / The Darkmaker / 赵曼伊mï
  74. 74 PLANET ラムジ
  75. 75 Hall of Fame The Script / will.i.am
  76. 76 回る空うさぎ Orangestar / 初音ミク
  77. 77 雨き声残響 Orangestar / IA
  78. 78 Surges Orangestar / IA
  79. 79 天ノ弱 鹿乃
  80. 80 天ノ弱(Piano ver.) Akie秋绘
  81. 81 アイロニ H△G
  82. 82 STAY The Kid LAROI / Justin Bieber
  83. 83 Million Days Sabai / Hoang / Claire Ridgely
  84. 84 Returns Poppin'Party
  85. 85 她追逐着月光的尽头 warma
  86. 86 帰路 - KaeriMichi - Otokaze
  87. 87 儿时的夏日 余日秋山
  88. 88 春日 四季音色
  89. 89 夏夜 四季音色
  90. 90 心动讯息 BlackDD
  91. 91 Forever (Epic Edition) PIKASONIC
  92. 92 Never Gonna Give You Up (Piano Version) LittleTranscriber
  93. 93 Revolution 高仕超
夏夜 - 四季音色
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

纯音乐,请欣赏