- 博客(101)
- 收藏
- 关注
原创 蓝桥杯每日一题(背包dp,线性dp)
将 1,2,4,8看成一个一个的物品,以完全背包的形式放入。一维形式:f]0]=1;由于二维形式会爆。下面给出写法需要注意的一点是:由于每次只用到前一层循环的数据,当前层j放不下i的位置,也就是j<i的位置,也要更新,因为下一层可能用到这个数据,不更新的话,就都是0了。
2024-04-09 21:45:28
579
1
原创 蓝桥杯每日一题(博弈论)
0 n%3==0 无论先手怎么出,后手都能让剩余的n%3=0,。3)m%3==0 结果每(m+1)一个循环,可以先取余 n%(m+1)。剩下k个,先手必胜。(m+1)|n 先手取x个,后手就可以取(m+1-x)个。最后一定是后手全部取完。若先手先把余数全部取完,先手就变成了第一种情况中的后手。某次后手操作之后,n变成了可以整除的形式,且由于nn的话。
2024-04-08 15:18:45
357
原创 蓝桥杯每日一题(快速幂、组合计数)
快速幂就是将a^k看做是a^2^0和a^2^1……相乘。(相邻两个数是平方关系)巧妙的是这个时候k就是多个2^n的组合,也就是可以二进制表示。所以就可以用k的二进制某一位是否为1,判断最后的结果是否乘以a^2^n。错误点:权值不用初始化直接使用a,每次循环将a平方。
2024-04-04 15:57:12
311
原创 蓝桥杯每日一题(筛质数、最大公约数)
用的埃氏筛法,st数组保存是否被筛掉,遍历到的st为0的节点就是质数,将其保存。然后遍历所有相邻的节点得到判断是否存在条件中的质数。
2024-04-03 17:24:53
436
原创 蓝桥杯每日一题(最小生成树、最近公共祖先、二分图)
看题解做的,是虚拟源点的思想解决 建发电站和连线路两个问题统一的、prim算法:基本思想是每次找离某个连通图(因为有多个发电站)最近的点。这个最小的value的点如果没有和发电厂就让它建发电厂。如果已经和某个发电厂连接,这个点就是最小生成树的组成部分。无论有没连接发电厂,每次找出的最小点都要去更新与其相连的其他结点。在prim循环的时候找最小的dis的点的时候不用担心其本身建厂的dis小于其连通后的dis导致差错。找到某个点的时候一定是其呈现最小状态的时候。
2024-03-31 17:47:04
711
原创 蓝桥杯每日一题(floyd算法)
如果两个城市之间有铁路t1=1,公路就会t2>1,没铁路的时候t1>1,公路t2=1。也就是公路铁路永远都不会相等。我们只需要计算通过公路和铁路从1到n最大的那个即可。floyd是直接在数组上更新距离。不需要新建dis数组。另外一定要记得把邻接矩阵初始化为无穷。
2024-03-27 21:23:58
380
原创 蓝桥杯每日一题(SPFA)
用另外一个数组存杂交结果,初始结点都为0,遍历所有杂交结果,只要可以减小就加入到队列中。if条件是距离小于两个max,因为必须要保证其父辈已经产生。另外注意使用普通队列即可;和dijkstra中的st数组不同,这里只用来判断是否是在q中。所以所有的初始结点都要st为1,pop的时候将结点st置为0.
2024-03-27 19:28:00
258
原创 蓝桥杯每日一题(Dijkstra最短路算法)
是一个多源的,构造一个0号点,到所有的源点的距离为0。以0号点为起点转换成了单源最短路。//错误思路:一个点一个点地单源实现,小的话就更新,但是由于每次更新时候比较的值是以其他源点为起点的值。所以是错误的。注意N和M的值:要保存无向图。
2024-03-24 21:45:53
475
原创 蓝桥杯每日一题(拓扑排序)
/3696构造有向无环图有向无环图才有拓扑排序,有环的话不能进行拓扑,因为会导致环中一个结点(环的入口位置)其入度永远无法变成0。先判断图是否可拓扑序,如果本来就不能就直接No,可以的话。可以按照拓扑序。确定某个边的方向的时候,只要其起点拓扑序小于其终点即可。要注意认真:YES格式写错了看了半天;一直报错,但是感觉没错,看不出来了。
2024-03-23 22:16:01
758
原创 蓝桥杯每日一题(dfs)
1、要注意以每个点为起点都要dfs2、自己用1-n 1-m存数不知道为什么报错3、自己写的时候参数写对了 层数,来源的位置,前面累计的数4、边界:0-k-1实现了k次,到k的时候,直接将res加入set5、否则则遍历4种可能,6、自己写的时候没有想清楚,边界应该怎样处理,因为每次都是res加完之后找下一层所以到了最后一层的时候其实前面已经结束了。842排列数组求数字的全排列;在一个地方:cnt,在递归调用的时候是dfs(cnt+1),而不是cnt++。也就是不能在这一层修改cnt的值。
2024-03-21 23:29:55
459
原创 蓝桥杯每日一题(BFS)
开始思路错误点:在用拉链法保存关注信息的时候,因为要看一个用户发的有多少转发的,所以要以用户为坑位,所有关注这个坑位的用户为链表。(开始弄反了)e数组存某个用户的idx,ne是某个节点在链表上的下一个,h是坑位。st状态数组的参数是用户,而不是idx//844走迷宫自己是用pair并且second放走的步数,内存超限了。下面是自己的做法y做法:直接使用一个二维数组存某个坐标到达的时候走的步数。
2024-03-17 20:42:15
952
原创 蓝桥杯每日一题(Tire树,字典树)
思路:利用前缀数组S(异或)的思想,要求某个区间的数的异或和,可以用区间的两个端点的S值进行异或。(这个地方注意边界)。怎么在限制范围内求两个Si值的异或的最大值呢。利用字典树的思想,让字典树的cnt数组保存这个结点出现的次数。在二叉树中找结果(具体做法就是从高位到低位尽量找和当前的数不同的分支),可能存在找到不在区间内的S值。我们可以从1到n遍历,删掉没有用的,而且后面也不会用到了。debug :res*=2+1 和 res=res*2+1不一样,后者等于 res=res*(res*2+1);
2024-03-15 21:22:40
468
原创 蓝桥杯每日一题(kmp)
求一个字符串的所有前缀的循环节出现的最大次数。也就是最小循环节kmp算法求循环节;将原串移动,移动后我们得知,四个黑色大括号完全相同。在下图所示的事例中,原串只有两个循环节,加一个红括号。k3加一个红括号的长度就是kmp中的next数组。字符串长度-next即为循环节长度。下面的串向右移动的长度为n-next,而next是最大的前后缀相等的长度。所以移动的长度K是最小的循环节。上面我们做了什么事:我们根据字符串的next数组的最大值,将其向后移动,使得前后缀重合。
2024-03-10 15:22:01
2311
原创 蓝桥杯每日一题(哈希、单调队列)
二进制所有的可能保存进哈希表,三进制找出所有的可能判断哈希表中是否有数字。注意一种情况就是修改完之后出现前导零。直接continue;学到了,某些条件的限制不一定要在循环条件上,可以直接在循环体内。
2024-03-09 19:06:27
446
原创 蓝桥杯每日一题 (双指针)
while循环的双指针,只要遇到一个x,就让y向前探索。不是就加加。使用set存储,最初的时候,每次更新ans都是用set的size-1,但是这落下了一种情况,while结束的条件一种是y遇到了set中重复的数,一种是y到头了,所以用y-x去更新值。
2024-03-06 15:33:00
375
原创 蓝桥杯每日一题(二分)
暴力方法改了40分钟,好在ac了思路:依次枚举所有字符(外层循环);第一个没有注意的点:没有加j的中间那层循环,直接用的while,这样会导致i后面可能有多个j的位置与i匹配,这样按着第一个匹配的匹配下去了,后面无法匹配上j就一直向后走。导致缺失情况第二个:本质上还是一样的问题,while结束后,也就是某个匹配的结果看完了,要注意把开始匹配的位置还回到i。二分的本质没理解透:不是看不到有序的东西就不能用二分去做。可以用二分的本质是进行完某次判断可以进一步缩短结果的范围l=1;r=n;
2024-03-04 19:31:15
609
原创 蓝桥每日一题 (差分)3月3号
自己做TLE:奈何想不出怎么用差分y的做法:根据本题特点,不去纠结中间具体加了多少,利用差分,只关心左右边界;最后巧妙地用!!来进行强制类型转换,输出0,1;(太厉害了)
2024-03-03 15:18:40
1726
原创 第六章 贪心(二)(排序不等式、绝对值不等式、推公式)
913 排队打水,每个人都有自己杯子的容量从小到大排序,总时间最小;y做法:当排好队后,每个人的等待时间长短已经确定。
2024-03-01 22:39:43
307
原创 第六章 贪心(一)
找出一组个数最少的点集,使得每个区间都至少包含其中的一个点:按照区间的右边界排序。:为什么这样选的点数是最小的1、根据思路的过程,我们找到的所有点的集合是一组合法解。2、ans(最优解)<= cnt(一个可行解)3、按照思路我们最后得到的点集就是所有互不相交的区间。根据常识,最优解一定最少是需要这些个互不相交的区间的个数(cnt)个的,也就是ans>=cnt4、得证。
2024-03-01 18:58:58
273
原创 第五章 动态规划 (二)(数位统计DP,状态压缩DP,树形DP)
求一个区间所有数的各位中,中1~9各自出现的次数。如果要求1-xxxxxxx中第四位中1出现的次数,思想是分情况讨论(划分集合):假设数为:1
2024-02-28 22:16:01
428
原创 第四章 数学知识(三)(高斯消元、求组合数、卡特兰数)
1、O(n^3)时间复杂度求解n元线性方程组2、三种初等行变换不影响方程组的解(通过初等行变换得到一个上三角形式)变换之后的三种情况变换过程:枚举每一列找到绝对值最大的一行,交换到第一行,变换为1,将其他行这一列的数化为0。每次进行完操作后在剩余的行中再去找某一列绝对值最大的行进行相同的变换。对于n=3的数,进行两次变换就可以得到上三角。(如下得到完美的阶梯型)从下往上消去未知数:高斯消元法求解线性方程组。
2024-02-22 10:18:02
398
原创 第四章 数学知识 (二)(欧拉函数、快速幂、扩展欧几里得、中国剩余定理)
/873 欧拉函数用公式定义法求某个数的欧拉函数int n;cin>>a;int res=a;i
2024-02-15 00:09:38
778
原创 第三章 搜索与图论(二)(最短路)
1、对于稠密图,由于朴素版的dijkstra算法与边数无关使用这种算法的复杂度较低。稀疏图用堆优化版的算法;单源最短路中存在负权边用SPFA 算法通常较好;多源用floyd算法;难点:如何建图,抽象为最短路问题。
2024-02-08 21:04:27
1521
原创 搜索与图论(一)(深搜,广搜,树与图的存储遍历,拓扑排序)
往深里搜,搜到叶子结点那里,回溯,到可以继续到叶子结点深搜的位置。1、回溯一定要恢复现场2、定义一个与当前递归层数有关的终止条件(题目要求的东西)3、每层都用循环判断是否存在可以dfs的路输出数字组合全排列的思想解决n皇后问题,用三个bool数组描述限制条件,用二维char数组保存结果,在恢复现场的时候也要恢复g数组,因为后面的其他结果可能不会将其覆盖掉。按照元素枚举的方式解决n皇后问题。
2024-02-06 20:23:48
964
原创 第二章数据结构(三)(哈希表、stl)
(1)不能映射为0,因为多个0组合到一起还是0,导致多个不同的字符串映射到同一个位置。字符串前缀哈希:将字符串当做一个p进制的数字,计算得到10进制的结果。2、开放寻址法 (数组长度是题目数据个数的2~3倍)没有位置向后找。可以利用前缀哈希计算出所有子串的哈希。3、字符串哈希(字符串前缀哈希法)1、拉链法 (加一个单链表)(2)不存在冲突的条件。
2024-02-03 16:01:13
295
原创 第二章 数据结构(二)(堆)
数组的方式存储、down和up操作实现各种操作。在小顶堆中一个点变小了应该向上更新(只要比父节点小就交换),一个结点变大了就往下走(只要)6、模拟堆的各种操作,维护hp数组保存堆中某个位置的数是第几个插入的;维护ph数组保存第几个插入的数是几;3、删除堆顶的元素:用堆尾更新堆顶,从上往下更新;1、插入一个数:从数组末尾加数,从下往上更新。4、删除第k个结点,用尾结点更新第k位结点;小顶堆:每个点都小于等于左右结点。2、获取最小值:heap[1]4、down操作的时间复杂度。5、堆排序:输出前m个小的数。
2024-02-03 09:10:52
349
原创 第二章 数据结构 (二)(并查集、Trie树)
1、 用二维数组来构建一个树,第一维为结点下标,第二维为子节点,单个二维数组的值为子节点下标。构建字典树用于查询和插入。
2024-01-31 16:28:10
424
原创 第二章 数据结构(一)(数组模拟链表、队列,栈以及kmp)
1、单链表基础插入和删除操作2、双链表3、模拟栈和队列3、单调栈4、单调队列,求滑动窗口的最大值和最小值。
2024-01-31 09:15:55
442
1
山东科技大学分布式计算结课MPI CUDA代码以及实验报告作业和Linux命令行讲课PPT
2024-04-20
超市管理系统MySQL数据库实验大作业,报告文档,.sql文件,Python代码连接数据库进行各种操作,答辩PPT
2024-01-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人