自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 1.26练习草稿

【代码】1.26练习草稿。

2024-01-26 10:15:14 44

原创 1.20归并排序

【代码】1.20归并排序。

2024-01-20 22:02:11 374

原创 草稿1.12/5

【代码】草稿1.12/5。

2023-12-05 17:01:08 78

原创 哈希表搭建

【代码】哈希表搭建。

2023-11-23 16:53:41 89

原创 Java学习笔记——private和继承用法

【代码】Java学习笔记——private和继承用法。

2023-10-19 15:17:54 101

原创 栈的实现(c++)

【代码】栈的实现(c++)

2023-10-09 11:41:13 44

原创 数据结构——多重链表的实现

【代码】数据结构——多重链表的实现。

2023-10-07 16:10:12 256

原创 数据结构——线性表的顺序存储实现

【代码】数据结构——顺序结构实现线性表。

2023-10-02 23:13:48 39

原创 代数结构(1)

【代码】代数结构(1)

2023-09-26 16:33:26 52

原创 代数结构与初等数论(1)——求不大于n且与n互质的个数

【代码】代数结构与初等数论(1)——求不大于n且与n互质的个数。

2023-09-22 12:59:36 58

原创 数据结构(1)中位数排序:基于问题分解

【代码】数据结构(1)中位数排序:基于问题分解。

2023-09-20 21:37:43 41

原创 洛谷 Array 数论

所以,由容斥定理得,答案=不递增+不递减-既不递增.也不递减(常数序列)包含从1到n的整数(可重复)。如果A单调不上升或单调不下降,A就可称为美丽的。找出在长度为n时,有几个美丽的A。(如果两个“1”相邻的话会出现新序列中有相同数字的情况):设一个长度为(2*n-1)的序列,用1填满n个空,剩余(n-1)个空;:找到每一个“1”,用其前方总共的“空格数”构成新序列。易得,单调不递增的A的数目=单调不递减的A的数目=:因为空格的数目最多只有n-1。对于长度为n的数组A,A中只。可见,单调不递减的A的数目=

2023-09-07 23:05:01 229

原创 排列组合问题小总结

有一天他脑子抽了,从口袋里拿出了 N 个不同的球,想把它们放到 M个相同的盒子里,并且要求每个盒子中至少要有一个球,他好奇有几种放法,于是尝试编程实现,但由于他天天不好好学习,只会上 B 站看游泳教练,于是他向你求助。a[i]=c[r][i]*(r-i)^n:先选出i个“一定不放的垛”(c[r][i]表示从r个种选出i个。容斥原理:答案=a[0]-a[1]+a[2]-a[3]+a[4]-……核心公式:f[i][j]=f[i-1][j]*j+f[i-1][j-1];N个不同的果子+M个相同的垛(不允许空垛)

2023-09-05 17:04:22 114

原创 洛谷 1025 数的划分(分垛)(搜索/递推)

搜索法:一垛一垛选择,为了避免重复(1、1、5;5、1、1)不妨设立一个规则:只选择不递减序列。(这样的话只有1、1、5才是合法的)此时还剩下i-j个果子,我们再选择是将i-j个果子分为1个垛,还是2个垛,还是3个垛······还是j个垛。3.不要忘记啦,每个垛都没有特殊标记的!题目分析:明显这是一道不为空的“分垛题”。两种方法:搜索法(只适用小数据)和递推法(都适用~)设dp[i][j]代表刚好将i个果子分成j个垛(抽象化)。为了保证每垛非空,首先将j个垛都先“铺”上一个果子。

2023-09-01 11:31:18 39

原创 卡特兰数8.28

且里面的括号数目可能为1,2,3······n,所以共有f(0)*f(n-1)+f(1)*f(n-2)+f(2)*f(n-3)+······+f(n-1)*f(0)种。最后的最后,结合法一与法二的结果,f(0)*f(n-1)+f(1)*f(n-2)+f(2)*f(n-3)+······+f(n-1)*f(0)=(例如:n等于3时,所有合法序列为()()()、()(())、(())()、(()()) 和 ((())))当有i个括号在里面,(n-1-i)个括号在外面时,共有f(i)*f(n-1-i)种情况。

2023-08-28 22:02:45 28

原创 洛谷 P1466 [USACO2.2] 集合 Subset Sums 递推

对于从1∼n 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。1.依照题目所示,将一列数字分为两列数字,也就等同于从这一列数字中选出部分数字组成一个集合。{3} 和{1,2} 是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)3.由此得到f[x][y]——选出的最大数字为x,构成的和为y的集合,有多少种。{3,4,7} 和 {1,2,5,6}{1,2,4,7} 和 {3,5,6}{1,6,7} 和{2,3,4,5}{2,5,7} 和{1,3,4,6}

2023-08-26 10:31:19 77

原创 洛谷 1144 最短路计数(无权图最短路)

由题意得,这是一个无向图,且N(顶点的数量)和M(边的数量)的数据范围很大。这里可以将一条无向边拆成两条有向边(如:x,y之间有一条边,储存为x到y有一条边,y到x有一条边),用f数组(f[i]表示顶点i关联的最新的一条边)和结构体b数组(from,to,next)储存。重边是要被重复计算的,也就是点j的最短路可以由dl数组中多个点抵达,同时也可以由i点(dl中的点)的多条边抵达,只要调整bj[j]=1的位置以及引入“临时标记”dj即可。(详情见代码及注释)储存dl数组的点,层层遍历,更新dl数组的点。

2023-08-04 08:11:52 170

原创 洛谷 1137 旅行计划

这个国家有 N 个城市,编号为 1 至 N,并且有 M 条道路连接着,小明准备从其中一个城市出发,并只往东走到城市 i 停止。所以他就需要选择最先到达的城市,并制定一条路线以城市 i 为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多。1.思考:题目的最终目的是求出的是N个答案——任意城市为终点的路线中,可以经过的最多的点的数量。我们可不可以通过部分点的ans[i]来更新部分点的ans[i],再来更新下一部分点的ans[i]......

2023-08-03 18:57:16 53

原创 洛谷 1038 神经网络

神经元按一定的顺序排列,构成整个神经网络。在兰兰的模型之中,神经网络中的神经元分为几层;称为输入层、输出层,和若干个中间层。每层神经元只向下一层的神经元输出信息,只从上一层神经元接受信息。下图是一个简单的三层神经网络的例子。因此,按层遍历点,将“神经信息一层层传递。

2023-08-03 12:10:18 39

原创 洛谷 3197 越狱(二分法计算幂)

由于数据过大,我们最后计算出的ans其实是(m^n)%100003-(m*(m-1)^(n-1))%100003;(比如:4%2-1%2=-1,它不等于(4-1)%2!监狱有n 个房间,每个房间关押一个犯人,有 m 种宗教,每个犯人会信仰其中一种。使用二分法:若b为奇数,a^b=a^(b/2)*a^(b/2)*a;若b为偶数,a^b=a^(b/2)*a^(b/2)。可能越狱的状态数量=所有状态数量-无法越狱状态数量(n个数字任意两个相邻的数字都不相同)=m^n-m*(m-1)^(n-1)

2023-07-29 10:00:56 37

原创 洛谷 3098 数列之异或(异或的规律)

例如:1^2^3^4^5^6^7=(1^2)^(3^4)^(5^6)^7=1^1^1^7=1^7=(最后的计算)001^111=110=6。1.找规律:任取一个奇数a,其二进制表示为xxxxxx1;则a-1二进制表示为xxxxxx0;求1⨁2⨁⋯⨁N 的值。A⨁B 即A , B 按位异或。依照上方规律,再结合异或运算的。

2023-07-29 09:26:19 145

原创 洛谷 1460 健康的荷斯坦奶牛(深搜/回溯法)

请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少。给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少。(3)搜索:遍历所有饲料(这里我们定的规矩是:所选择的饲料编号从小到大排列)——选择可用饲料(装进ys数组并加上标记)——搜索下一个饲料——回溯(标记取消,也就相当于从ys数组中退出)(1)减枝:如果当前使用的饲料数目多于最优方案的数目,那就没必要再搜索下去了。下面 g 行,第 n 行表示编号为 n 饲料包含的各种维他命的量的多少。1.整体思路:深搜(回溯法)

2023-07-29 09:23:16 61

原创 洛谷 3913 车的攻击(排序)

但是Ri太大了,它的范围是[1,10^9],数组的下标无法承受。所以换种思路,将所有输入的Ri用数组储存,然后从小到大排序,遍历数组的每一位,当与前一位的数字不同时,说明又是新的“一行”,计数增加。N×N 的国际象棋棋盘上有K 个车,第i个车位于第Ri行,第Ci列。求至少被一个车攻击的格子数量。车可以攻击所有同一行或者同一列的地方。• 对于100% 的数据,1≤N≤10^9;1≤Ri,Ci≤N。第一反应用标记数组标记出现的行,例如:Ri=105,bj[Ri]=1。

2023-07-28 20:42:19 57

原创 洛谷 1469 找筷子(异或单身狗)

CX 小朋友找出了餐厅中所有的筷子,但遗憾的是这些筷子长短不一,而我们都知道筷子需要长度一样的才能组成一双,更麻烦的是 CX 找出来的这些筷子数量为奇数,但是巧合的是,这些筷子中只有一只筷子是落单的,其余都成双,善良的你,可以帮 CX 找出这只落单的筷子的长度吗?另外,异或运算还有”交换律“和”结合律“的性质,即1^0^1=1^1^0且1^0^1=1^(0^1),由此推广到a^b^c=a^c^b,a^b^c=a^(b^c)。异或的原理是:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)(¬:非运算;

2023-07-28 20:37:45 32

原创 洛谷 1100 高低位交换(左移运算和右移运算)

给出一个可以用一个32 位的二进制数表示的非负整数(不足 32位用 0 补足)。我们称这个二进制数的前 16位为“高位”,后 16 位为“低位”。将它的高低位交换,我们可以得到一个新的数。试问这个新的数是多少(用十进制表示)。1.找到32位二进制数对应的数据类型——unsigned int(%u)unsigned long(%I64d)表示。2.位运算:将前16位与后16位分开。unsigned int表示。long long表示。

2023-07-28 15:36:06 47

原创 洛谷 1776 宝物筛选

他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 F 有一个最大载重为 W 的采集车,洞穴里总共有 n 种宝物,每种宝物的价值为 vi,重量为 wi,每种宝物有 mi 件。小 F 希望在采集车不超载的前提下,选择一些宝物装进采集车,使得它们的价值和最大。比如说:1号背包有5个,我们可以绑定为1个1号背包、2个1号背包、4个1号背包。V[i]表示价值,w[i]表示重量,f[i]表示给定i重量可以达到的最大价值。很重要的是,由于本题的数据太大了,我们要把多重背包问题转换为01背包问题来提高效率!

2023-07-22 20:41:04 41

原创 洛谷 5365 英雄联盟(动态规划)

小皮球只会玩 N 个英雄,因此,他也只准备给这 N 个英雄买皮肤,并且决定,以后只玩有皮肤的英雄。为了让自己看起来高大上一些,小皮球决定给同学们展示一下自己的皮肤,展示的思路是这样的:对于有皮肤的每一个英雄,随便选一个皮肤给同学看。比如,小皮球共有 5 个英雄,这 5 个英雄分别有 0,0,3,2,4 款皮肤,那么,小皮球就有 3×2×4=243×2×4=24 种展示的策略。且花i元能够拥有的最多的展示方案数量,是由花更少的钱所得到的展示方案数量决定的。f[i]表示花i元可以达到的最多的展示方案的数量。

2023-07-22 19:46:46 50

原创 洛谷 2347 砝码称重(动态规划)

使用前n个砝码可以表示出多少种重量”的子问题是,“使用前n-1个砝码可以表示多少种重量”,“”使用前n-2个砝码可以表示多少种重量”......遍历1-max(可称出的所以重量),对于dp[i][j]=1的,对dp[i-1][j]也标记上,同时标记dp[i][j+fm[i]]。例如:dp[5][2]=1表示用前5个砝码可以称出重量2。设有 1g、2g、3g、5g、10g、20g 的砝码各若干枚(其总重≤1000),可以表示成多少种重量?最终状态:i从1-max遍历,统计dp[js][i]=1的个数。

2023-07-22 15:11:11 125

原创 洛谷 1853 投资最大效益(完全背包问题)

当然,每一种债券的投资额是不同的,一般来说,投资越大,收益也越大,而且,每一年还可以根据资金总额的增加,更换收益更大的债券。“在限定s成本内所得最大利润”的子问题是,“在限定s-1成本内所得最大利润”,“在限定s-2成本内所得最大利润”,“在限定s-3成本内所得最大利润”......拿到j的债券范围(1-j种债券),遍历所有可由j债券更新的f1[t],f1[t]=max(f1[t],f1[t-na[j].in]+na[j].out)例如:有如下两种不同的债券:1.投资额 $4000,年利息 $400;

2023-07-22 12:11:08 44

原创 洛谷 1048 采药(01背包问题)

在限定时间内,从前X项草药中采集出最大价值”的子问题是,“在限定时间内,从前X-1项草药中采集出最大价值的”,“在限定时间内,从前X-2项草药中采集出最大价值的”,“在限定时间内,从前X-3项草药中采集出最大价值的”......在时间允许的范围内,若第j项草药可以采集,此时,f[i][j]=max(f[i-1][j],f[i-1][j-ti[i]]+va[i]);f[i][j] 指在限定j时间内,从前i项草药中采集出的最大价值。若第j项草药不可以采集,f[i][j]=f[i-1][j];

2023-07-22 09:14:38 34 1

原创 洛谷 2758 编辑距离(动态规划)

若按照以上定义dp[0][5]代表a的第0项与b的前6项恰好对齐所进行的操作数,往前追溯会出现dp[-1][5]的情况。这里我们的解决方案是给数组多腾出一点空间,修改数组的定义,使dp[i][j]代表a数组的前i-1项与b数组的前j-1项完全对齐。dp[1][6]代表a的第0项与b的前6项恰好对齐所进行的操作数,往前追溯到dp[0][5]、d[0][6]、d[1][5],皆是合法操作。//修改a数组或b数组。

2023-07-21 08:38:37 44 1

原创 洛谷 1020 导弹拦截(动态规划)

但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。输入导弹依次飞来的高度,计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。(2)问题二:利用结论:序列至少要用num1个不升子序列才能覆盖,num1为最长递增子序列的长度。(2)如果要拦截所有导弹最少配备多少种导弹拦截系统——>序列至少要用多少个不升子序列才能覆盖;2、从覆盖该序列的num1个不升子序列中各选出一个元素,可以构成一个递增序列。

2023-07-20 18:35:21 47

原创 洛谷 1439 最长公共子序列(动态规划)

又由于在前面的设定中,p1的编码序列是递增序列,当前所求公共序列转化为了p2编码序列的。3对应编码为2,1对应编码为1,5对应编码为3,7对应编码为4。(意味着:pos中最长递增子序列长度没有变,但是更新后方便pos数组后面的数字进入d序列)1.如果pos[i]大于d数组中当前所有数,将d数组往后再开一个位置,储存pos[i]。2.如果pos[i]小于d数组中某一个数,停止遍历,将该数字替换为pos[i]。例如:p1为1357,1编码为1,3编码为2,5编码为3,7编码为4。1.创建一个新数组d数组。

2023-07-20 09:00:30 108

原创 洛谷 3673 最长上升子序列(动态规划)

给出一个由 n(n≤5000)个不超过 10的6次方 的正整数组成的序列。请输出这个序列的最长上升子序列的长度。(1)遍历前i-1项,比较a[i]与a[j]的大小,判断a[i]是否可以加入该序列。最长上升子序列是指,从原序列中按顺序取出一些数字排在一起,这些数字是逐渐增大的。a[i]表示第i项的值;p[i]表示以第i项结尾的最长上升子序列的长度。(2)更新以a[i]结尾的最长子序列的长度(p[i])在处理第i项时,可以进行以下操作。这是一个简单的动规板子题。1.整体思路:动态规划。

2023-07-20 07:50:56 71

原创 洛谷 1908 逆序对(归并排序)

最近,TOM 老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中 ai​>aj​ 且 i<j 的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。(2)在归并排序过程中记录逆序对的数量;将两个单调序列合并的规则如图所示。在 合并序列 时,如果出现了。的情况就计数,具体见代码。(2)记录逆序对数量。

2023-07-13 23:54:02 84 1

原创 洛谷 3374 树状数组

已知一个数列,你需要进行下面两种操作:将某一个数加上 x,求出某区间每一个数的和。输入:第一行包含两个正整数 n,m,分别表示该数列数字的个数和操作的总个数。第二行包含 n 个用空格分隔的整数,其中第 i个数字表示数列第 i项的初始值。1 x k 含义:将第 x个数加上 k;2 x y 含义:输出区间 [x,y]内每个数的和。从根结点出发,判断编号x在父节点的左儿子里还是右儿子里,然后继续往下查询,直到找到了叶结点,那它就是x序号无疑了。(查询序号x到序号y对应的数值的和)(1)构建树状数组:build。

2023-07-13 16:22:37 56 1

原创 洛谷 2024 食物链

具体操作:将x的邻接顶点更新为x的源头r1,y的邻接顶点更新为y的源头r2,再将x的源头连接y的源头。由x吃y得到,x到y的距离为三的倍数加一,而此时d[x]=d[r1]+d[y],所以我们将d[r1]更新为d[x]-d[y]。x,y之间可能有直接的关系(比如:前面出现语句x吃y),也可能有间接的关系。(比如:前面出现语句x吃a,a吃y,由此得到y吃x)所以,不妨将构成一条食物链的所有点放进一个连通分支里。当给出语句阐述x,y的关系时,查找x,y的关系,若x,y之间有关系且与语句相悖,则假话数量增加;

2023-07-13 15:12:52 46 1

原创 洛谷 1196 银河英雄传说

合并指令为 M i j,含义为第 i号战舰所在的整个战舰队列,作为一个整体(头在前尾在后)接至第 j号战舰所在的战舰队列的尾部。此处,我们使用r[30010]记录子节点到相邻结点的距离(这个思路来源于:若x,y在同一连通分支上,可以通过不断查询相邻结点找到)和r1[30010]记录某个连通分支的长度(其意义在于使r得以记录,具体操作,请继续往后看),最终得到答案。1.在两个连通分支连接时(union1合二为一),更新“新的连通分支” 的长度,与此同时,更新“旧源头”距离“相邻结点”的位置。

2023-07-12 22:43:35 43 1

原创 洛谷 1621 集合

答:这里必须提一句,有些小伙伴(比如我)最开始直观的想法就是遍历所有点x,寻找x所在连通分支的源头,由此统计不同的连通分支的个数。将[a,b] 范围内的整数作为点,如果满足题给条件,a,b将装入了一个集合等同于把a,b放进一个连通分支里。),不妨找到所有符合该条件的质因数,将所有由于该质因数相连的a,b,放进一个连通分支。(2)将关联的两点放进一个连通分支里(或者说,将a,b,所在连通分支合并);的知识,分别找到a,b两点的源头r1,r2,并将r1,r2连接,即可。问:a,b两点关联的充要条件是什么?

2023-07-12 12:25:54 34 1

原创 洛谷 1111 修复公路

其等价于“无环”,“无重边”,“无回路”。再等价于,在连接边i之前,我们要保证其所关联的两个顶点x,y并不连通,即。此时注意我们要维护两个原则,”简单图“和”无回路“,有悖原则的边不算在”建树“的边中。而在判断i边是否为有效边时,可以通过并查集“查源头”的方式,判断x,y两点是否在一个连通分支上。思考一个问题,假设图G为简单图,我们需要最少的边使图G为连通图,是不是意味着图G是一棵。树的判定条件就很明晰啦,p(顶点的个数)=q(边的个数)+1且无回路,即可。(1)将每条边按照修复时间排序,依次连边。

2023-07-12 10:39:13 73 1

2-202105600103金鑫-ALU.zip

2-202105600103金鑫-ALU.zip

2023-10-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除