- 博客(9)
- 收藏
- 关注
原创 算法2.2 构造专题
构造什么是构造构造题的解法题解(21.8.29)CF1438D Powerful Ksenia什么是构造构造题是一种题型。不同于其它的算法、数据结垢题,根据查询输出结果;构造题是让你给出一组方案,使得在一定限制内符合条件。从形式上来看,问题的答案往往具有某种规律性,使得在问题规模迅速增大的时候,仍然有机会比较容易地得到答案。这要求解题时要思考问题规模增长对答案的影响,这种影响是否可以推广。例如,在设计动态规划方法的时候,要考虑从一个状态到后继状态的转移会造成什么影响。构造题一个很显著的特点就是高
2021-10-02 22:30:46 1261 1
原创 数论1.0 数论基础
数论基础整除整除定义整除性质约数(因数)定义约数(因数)性质数论函数积性函数定义性质一些前置芝士和定义。数论(number theory ),是纯粹数学的分支之一,主要研究整数的性质。——百度百科NOIP包含的数论仅有初等数论。高等数论是人学的?(暴论)整除整除定义设 a,b∈Z,a≠0a,b \in Z,a \ne 0a,b∈Z,a=0。如果 ∃q∈Z\exist q \in Z∃q∈Z,使得 b=aqb = aqb=aq,那么就说 bbb 可被 aaa 整除,记作 a∣ba \mid
2021-09-20 18:30:05 436
原创 算法2.1 分治与倍增
分治与倍增分治定义快速幂归并排序cdq分治分治定义分治算法的核心思想就是“分而治之”。大概的流程可以分为三步:分解 -> 解决 -> 合并。分解原问题为结构相同的子问题。分解到某个容易求解的边界之后,进行递归求解。将子问题的解合并成原问题的解。分治法能解决的问题一般有如下特征:该问题的规模缩小到一定的程度就可以容易地解决。该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质,利用该问题分解出的子问题的解可以合并为该问题的解。该问题所分解出的各个子问题是
2021-08-27 16:37:56 290
原创 算法2.0 线性优化策略
线性优化策略前缀和与差分前缀和定义生成单点查询区间查询单点修改区间修改所谓线性优化,即维护一个序列并进行操作前缀和与差分前缀和定义设原数组为a[]a[]a[], 则前缀和数组为sumi=∑k=1iaksum_i=∑^i_{k=1}a_ksumi=k=1∑iak生成 sum[0] = 0; for(int i = 1; i <= n; i++) sum[i] += a[i];单点查询ans = sum[i] - sum[i - 1];区间查询 for(int i
2021-08-02 18:46:52 439
原创 数论1.6 组合数学
组合数学原理加法原理乘法原理(分步计数原理)排列原理加法原理若完成一件事的方法有 nnn 类,其中第 iii 类方法包括 mim_imi种不同的方法,且这种方法互不重合,则完成这件事有:N=∑i=1nmiN=\sum^{n}_{i=1}m_iN=∑i=1nmi (分类完成)乘法原理(分步计数原理)若完成一件事需要 nnn 个步骤,其中第 iii 个步骤有 mim_imi 种不同的完成方法,且这种步骤互不干扰,则完成这种事共有:N=∏i=1nmiN=∏^{n}_{i=1}m_iN=∏
2021-05-20 22:53:42 194
原创 数论1.4 同余问题
同余问题同余概述基本定义和定理同余概述基本定义和定理定义1:给定m∈Zm∈Zm∈Z,若amod m=bmod m(a,b∈Z)a\mod m = b \mod m(a,b∈Z)amodm=bmodm(a,b∈Z),则称 aaa 和 bbb 对模 mmm 同余,记作 a≡b(mod m)a ≡ b(\mod m)a≡b(modm) ,并称该式子为同余式;否则称 aaa 和 bbb 对模 mmm 不同余。定义2:ZZZ 被分为 mmm 个不同的集合 A1...mA_{1...m}A1...m,
2021-04-04 16:21:03 770
原创 模板
模板排序读入输出选择排序冒泡排序排序读入void input(){ cin >> n; for(int i = 0; i < n; i++) cin >> a[i]; return;}输出void output(){ for(int i = 0; i < n; i++) cout << a[i] << " "; return;}选择排序void SelectSort(){ for(int
2021-02-04 11:03:06 87
原创 算法1.2 归并排序
排序笔记稳定性分类基于比较的排序选择排序思想图示代码分析冒泡排序思想图解代码稳定性假设某一数组经过排序后,相同大小的元素次序不变,则称这一数组是稳定的;否则为不稳定的分类基于比较的排序选择排序思想每一趟从待排序的数据元素中选出最小的一个元素,顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。图示代码void SelectSort(){ for(int i = 0; i < n; i++) { int min = i; for(int j = i + 1;
2020-10-18 22:58:34 178
原创 算法1.0 算法
算法是什么算法(algorithm)就是任何 良定义 的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出,即是把输入换成输出的计算步骤的一个序列。算法也可以看成是用于计算问题的工具,即描述一个特定的计算过程来实现问题所期望的输入/输出关系。算法的特征有穷性(Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止;确定性(Definiteness):算法的每一步骤必须有确切的定义;输入项(Input):一个算法有0个或多个输入,以刻画运算对象的初始
2020-10-18 21:56:32 311 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人