- 博客(7)
- 收藏
- 关注
原创 第七讲:图论
题目要求我们求出从起始站到其他所有站点的最短路,我们可以用dijkstra算法来计算,但还要求我们求出返回的最短路径,即从所有站点到起始站的最短路,事实上我们可以反向建图,把路径的起点与终点调换,就转化成求起始站到其他站的最短路,再用一次dijkstra算法来算。求树上的最大路径长,枚举每个点的最大路径长,就是它的树长中最大的两个之和,他的最大的树长就是最大子树长+1,最后就得到直径。初步了解了图和树的概念,了解掌握了Floyd算法和Dijkstra算法,对树形DP有了更深的了解。
2025-02-19 15:26:00
417
原创 第六讲:动态规划
这个题,要将求最长公共子序列的问题转化成求P2的最长递增序列,由于P1和P2都是1,2,n;即递增的,P2也变成另一个序列,现在P2中的递增子序列一定是P1的子序列,就变成求新的序列的最长递增序列问题。多重背包,将数量相同的宝物分成一个一个不同数量的宝物组,进行二进制分组,分成1,2,4等不是2的n次方-1,就将剩下的分成一组,然后用背包题的解法就行。t 时间,v 价值。ans为前i个范围中最大的连续子段和,b为为连续序列之和当a+b<a时,更换为从a开始的连续序列,开始寻找。
2025-02-16 14:56:21
1737
原创 第五讲:搜索算法
这道题我用的是BFS,开一个结构体,中开一个数组用来储存维他命量,一个用来存种类,再开一个用来储存种类名,BFS循环时使i从上一个种类名之后开始,也就是team[head].num[team[head].number]+1。基础的DFS题,用一个数组储存每个拆分出的数字的个数,利用递归实现不定多重循环。先将’1‘标记,然后将其编入队列,之后进行BFS,开始遍历其他的’0‘.4.健康的荷斯坦奶牛 Healthy Holsteins。从0,0开始进行BFS,如果没有被搜索到的就是闭合圈。1.自然数的拆分问题。
2025-02-13 18:29:29
1484
原创 第四讲:数论训练
本题数据太大必须使用快读去并且%19260817,得到处理后的a,b,bx≡a(mod19260817) 即求bx+k*19260817=a的最小正解,最后进行x = (x % MOD + MOD) % MOD处理。任何⼤于 1 的正整数都可以唯⼀地(忽略因⼦顺序)表示为素数的乘积,求LR之间的素数需要将合数标记处理,只要用[2,sqrtR],之间的素数就可以标记其中的素数。本题求[l,r]中的最小互质段个数,实际上i与i+1互质,即r-l,但要考虑特殊情况1与1同样满足最小互质段的要求。
2025-02-10 16:59:52
384
原创 第三讲:基础数据结构
每次合并最小的两堆果子,直到合并成一堆,每次消耗的体力之和就是最小值。对优先队列的基本应用用string判断输入的字符串然后执行操作。初始化数组为1,将出去的改为0,直到出去的数量等于总人数。2.ST 表 && RMQ 问题。ST表思路的基本实现。
2025-02-07 17:54:12
647
原创 第二讲:二分法
二分查找是一种高效的查找算法,适用于在有序数组中查找特定元素。它的核心思想是通过不断缩小查找范围来快速定位目标元素。步骤初始化两个指针(或索引),分别指向数组的起始和结束位置。计算中间位置,并比较中间元素与目标元素。如果中间元素等于目标元素,查找成功,返回该位置。如果中间元素大于目标元素,将结束指针移动到中间位置的前一个位置,继续在左半部分查找。如果中间元素小于目标元素,将起始指针移动到中间位置的下一个位置,继续在右半部分查找。重复步骤2-5,直到起始指针超过结束指针,查找失败。优点。
2025-01-26 16:48:30
1655
原创 第一讲:学习总结
统计字符串中的“A”“B”等问题的数量,然后分别判断和轮数的大小,如果小于就让结果加上轮数-问题数,最后输出结果。直接进行判断,先判断每天的执行情况,然后再判断总共的执行情况。直接将输入的字母大写化,然后和YES比较得出结果。根据输入的i值,决定打印o的重复次数。
2025-01-23 21:06:45
499
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅