标签:数据结构
最小生成树 Prim算法 朴素版Prim O(n^2)稠密图 步骤: S:表示最小生成树的集合 初始化距离 找距离集合S最近的节点 将节点加入集合S 用该节点更新非S点到集合S点的距离 代码:const int N = 510; const int INF = 0x3f3f3f3f; in
「观前提醒」 「文章仅供学习和参考,如有问题请在评论区提出」 目录引入Atlantis 问题(矩形面积问题)P5490 【模板】扫描线 - 洛谷 二维数点P2163 园丁的烦恼 - 洛谷Pair Sum and Perfect Square参考资料 一些扫描线问题的整理。 引入 扫描线一般
欧拉函数 互质:对于 $forall a, b in mathbb{N} $, 若 (a, b) 的最大公因数为 (1) , 则称 (a, b) 互质。 欧拉函数:即 $ varphi (N)$, 表示从 (1) 到 (N) 中与 (N) 互质的数的个数。 在算术基本定理中, 任何一个大于 (1
Nim游戏 给定 (n) 堆石子,第 (i) 堆石子有 (A_i) 个石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。 若两人均为巨佬,采用最优策略,先手是否必胜。 这种游戏被称作Nim博弈。游戏过程中面临的状态叫做局面
1.io优化 const char endl = 'n'; //另外,请使用'n'而不是 endl ,因为endl默认会增加刷新操作,而导致输出缓冲失效,降低效率。 cin.tie(0); ios::sync_with_stdio(false); cin.tie(0) 和 ios::sync_
洛谷 P3304 [SDOI2013] 直径 题解 题目链接 题目分析 第一部分好说,求直径,dfs或者DP都可以。 第二部分,有一个定理,就是所有直径中点重叠。 那么有两种情况 一种是中点在一个节点上,那么显然这个点是每条直径的终点,也就是说直径的一半相等。从这个点出发dfs,找出所有最远点。
P1336 最佳课题选择 题解 题目链接 题目分析 状态:考虑 (f_{i,j}) 表示前 (i) 种论文里面,一共写了 (j) 篇,的最少花费时间。 转移策略:我们一次考虑每一种论文写多少篇。假设写 (k) 篇,(k in [0,j] cap mathbb{Z}) ,有转移方程: [f_{i,j
一、问题描述:        高精度算法是处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算
数论 质数 在大于1的整数中,只包含1和本身这两个约数,就被称为质数,也叫素数 质数的判定 试除法 遍历2-n,若有约数则不为质数 O(n) 优化: d整除n,则n/d也整除n,约数总是成对出现,只要找较小的约数,即取d <= n/d,则d <= sqrt(n) 只用遍历2-s
基本概念 双向链表概念和单向链表是一致的,区别在于双向链表在单向链表的基础上,指针区域多了一个指向上一个节点的指针。单向链表内容可以参考我的上一篇文章:http://t.csdn.cn/Iu56H。 基本的数据结构如图所示: 链表结构 双向链表结构包含了节点的数据内容和两个指针:指向前一个节点的p
CodeForces CF1846G 题解 CodeForces题目链接 洛谷题目链接 标准答案是状压之后,转化成Dijkstra算法跑最短路。我这里提供一个不一样的思路。 题意简述 主人公得了病,有部分类型的症状。所有类型症状共有 (n) 种,用长为 (n) 的01串表示是否有那种症
和atcoder一起出交互题是吧。 D题回复逆序对个数,对于[L,R-1]和[L,R],如果R是最大值,那么对逆序对个数无影响。这样来确认某个数是不是最大的,然后递归扩展到整个区间 这里看到逆序对,要想到归并排序、分治、递归、区间合并。。。。。 查看代码 // Problem: D. More W
数据结构起源 早期人们都把计算机理解为数值计算工具,就是感觉计算机当然是用来计算的,所以计算机解决问题,应该是先从具体问题中抽象出一个适当的数据模型,设计出一个解此数据模型的算法,然后再编写程序,得到一个实际的软件。 可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表
题目链接 给定一个n个元素有序的(升序)整型数组nums和一个目标值target, 写一个函数搜索nums中的target, 如果目标值存在返回下标, 否则返回-1。 示例 1: 输入: nums = [-1, 0, 3, 5, 9, 12], target = 9 输出: 4 解释: 9 出现在
高斯消元 求解含有n个未知数,n个方程的多元线性方程组 O(n^3) 初等行变换: 某行乘以一个非零数 交换两行 某行加上另一行的若干倍 利用初等行变换将方程组化为上三角矩阵 解的情况: 完美阶梯型:唯一解 非完美阶梯型: 0 == 非0:无解 0 == 0:无穷解 步骤: 枚举每一列
在.NET中,理解对象的内存布局是非常重要的,这将帮助我们更好地理解.NET的运行机制和优化代码,本文将介绍.NET中的对象内存布局。 .NET中的数据类型主要分为两类,值类型和引用类型。值类型包括了基本类型(如int、bool、double、char等)、枚举类型(enum)、结构体类型(str