- 博客(105)
- 收藏
- 关注

原创 【探究图论中dfs记忆化,搜索,递推,回溯关系】跳棋,奶牛隔间, 小A和uim之大逃离 II
本篇很高能,如有错误欢迎指出,本人能力有限(需要前置知识记忆化dfs,树形dp,bfs+dp,tarjan)另外,本篇之所以属于图论,也是想让各位明白,dfs就是就是在跑图!如果dfs离开了图论的知识将会困难重重记忆化dfs可以看这里树形dp可以看这里tarjan可以看这里。
2024-03-26 20:47:05
2593
3
原创 【atcoedr习题】4
题意是一个01字符串,把它变成只有一组相邻的0或相邻的1,改变每个字符都有一个代价。f2[i][0]表示从右到左把字符串变成01交错且第i个是0的最小代价。f1[i][0]表示从左到右把字符串变成01交错且第i个是0的最小代价。
2024-06-04 20:55:11
853
1
原创 【算法每日一练]-动态规划 图论(换根dp)会议,医院设置
我们首先知道d[1]=16,cnt[1]=10我们来看d[2]应该怎么求,我们发现相对于d[1]来说,如果设2为最佳点,2,5,6其距离-1,剩下的1,4,3,7,8,9,10到其距离+1。定义:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,达到的效果是生成的多棵树尽可能平衡。还是一道求树的重心题。其中3是子根2对应的节点数cnt[2],7是1为子根对应的节点数cnt[1]-cnt[2]得:d[i]=d[fa]-cnt[i]+(cnt[1]-cnt[i])
2024-05-31 14:43:48
595
原创 【2023百度之星初赛】跑步,夏日漫步,糖果促销,第五维度,公园,新材料,星际航行,蛋糕划分
目录题目:跑步思路: 题目:夏日漫步思路:题目:糖果促销思路:题目:第五维度 思路:题目:公园思路:题目:蛋糕划分编辑思路: 小度每天早上要和小猫一起跑步。小猫的位置数值越小表示越在后面,速度越小表示越慢,它们都向一个方向跑。小猫比较喜欢一起跑,所以当速度更快的小猫遇见速度慢的小猫时,它就会放慢速度,变成一组一起跑。注意,初始位置相同的小猫直接组成一组。请问最终不再有追赶上的情况时,最多一组有多少只小猫? 我们先来捋一下题目哈:不同位置的小猫同时
2024-05-31 14:37:58
1824
原创 带你学习kmp算法
kmp算法代码首先看下面这个匹配的过程(这不会都看不懂吧)所以我们只需要在发现当前位置不匹配的时候,把子串的指针j指向next处(next存放每个位置前面串的公共最长前后缀下标)如果匹配,就j++代码部分:然后我们发现每个字符的跳变位置和主串没有关系,所以我们单独研究子串(引出next数组)下面这个就是next数组。
2024-05-27 14:32:37
788
1
原创 【算法每日一练]-图论(lca) 篇19 最近公共祖先LCA,货车运输
那么不妨假设求u到v的路径,我们要所有由u通往v的路径中最小边权中最大的路径,那么如果我们按照最大生成树去建图,是不是图中任意两点间建立的路径都是最大路径?可以设想一下如果u到v还有别的额外的路径,那么这些路径之所有没有没用上,不就是因为有的边权太小了。根据: dp[i][j]=max(dp[i][j],min(dp[i][k],dp[k][j]))进行转移。设置:p[i][j]存的从i向上走2的j次方那么长的路径到的父节点。设置dp[i][j]表示i到j路径上的存在的最小边权,然后至少能拿小半分了。
2024-05-27 14:30:16
722
原创 【算法每日一练】动态规划,图论(换根dp)会议 ,医院设置
我们首先知道d[1]=16,cnt[1]=10我们来看d[2]应该怎么求,我们发现相对于d[1]来说,如果设2为最佳点,2,5,6其距离-1,剩下的1,4,3,7,8,9,10到其距离+1。定义:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,达到的效果是生成的多棵树尽可能平衡。还是一道求树的重心题。其中3是子根2对应的节点数cnt[2],7是1为子根对应的节点数cnt[1]-cnt[2]得:d[i]=d[fa]-cnt[i]+(cnt[1]-cnt[i])
2024-04-29 11:47:26
1653
原创 行列式求解
(5,3)减去0倍(3,5)减去1倍(2,3)减去1倍(1,2)减去2倍(0,1)->(1,0)不能直接乘上上面行的倍数来消除本行对应元素。然后每次检查上面行的元素是否为0,然后换回来就行了。(1,3)减去2倍(0,1)->(1,0)给出一个矩阵求 行列式。
2024-04-29 11:43:01
530
原创 第十三届蓝桥杯真题:x进制减法,数组切分,gcd,青蛙过河
所以如果b+k是m*c的话,那么此时a+k必然也是c的倍数(因为它们两个差c啊),所以只需要枚举到b的下一个c的倍数即可,也就是(b/c+1)*c。首先要注意到题上给出的是连续的的1~n的某个排列,然后我们只需要判断区间的极值和区间长度是否一样就行,如果相等,就说明此区间一定是连续的自然数。其实就是一道观察规律的题。你发现如果a这个位置上的数x,b这个位置上的数是y,那么此位置至少是max(x,y)+1进制。假设存在一组mid长度的区间和小于2x,那么经过x次来回,必然要经过此区间2x次,所以不成立。
2024-04-12 21:10:03
949
原创 第十四届蓝桥杯题解:平方差 ,更小的数,买瓜,网络稳定性(货车运输)
这道题就是数论的题,不难想到一个数m可以拆成(a-b)(a+b),其实(a-b)和(a+b)就是m的一对因子,不妨设为x和y。根据: dp[i][j]=max(dp[i][j],min(dp[i][k],dp[k][j]))进行转移。那么可以定义dp[i][j]表示从i下标到j下标的方案是否合法,主要就是为了快速求dp[i][j]那么不妨假设求u到v的路径,我们要所有由u通往v的路径中最小边权中最大的路径,那么如果我们。设置dp[i][j]表示i到j路径上的存在的最小边权,当然前提是i能到k,k能到j。
2024-04-10 21:54:41
1618
原创 【算法每日一练】图论(树论)篇17 最大子树和,树上异或,树的分解,二叉树问题
今日知识点:对于每个子树如果和小于0就返回0;如果大于0就直接返回。注意异或的性质,偶消奇不消,所以lca上面的都消掉了,并不需要跑lca,也就是说只需要把根到所有点的距离跑出来即可如果上传过来小于k个,我们是考虑把当前根节点也加入其中;如果大于k,那就直接返回失败;等于k忽略这棵树的深度就是这棵树上到根节点的最长距离+1;这棵树的宽度就是到根节点距离相同的节点个数的最大值。
2024-04-02 14:01:17
1368
原创 [算法每日一练]-dfs 篇10 填字母游戏(出自蓝桥国赛), Guarding the Farm S ,挖地雷
今日知识点:不要去dfs找山峰,要对点排序然后对每个山峰dfs标记山脚不需要管当先轮到谁了,只需要知道对于当前的局面先手的人是否能赢,或平,然后据此来返回值就行,当前这样的局面结果是固定的暴力尝试从每个点为根,去找对应的最多地雷数。
2024-04-01 11:48:00
876
原创 【算法每日一练】动态规划 篇19 最佳课题选择 书本整理 打鼹鼠 吃吃吃 夏日漫步 非零字段划分
m个时间,每个时间都有一个鼹鼠出现,如果我们尝试去找起点跑图或者dp,肯定要开二维,但是还要记录当前的时间,因为你的步数不一定等于时间嘛,你可以停在原地的,所以就要开三维。一定用好排序后的结果,我们注意到状态的转移和每次拿走的书关系不大,而是和其两旁的书关系很大,所以免不了我们需要关注每次拿走书的两旁的书,额!我们不关心岛屿只关心岛峰和岛谷(因为只有这两种才影响答案)。f[i][j]=min(f[i-1][j-k]+f(k)) k
2024-03-29 20:01:04
1449
3
原创 【算法每日一练】动态规划 篇18 猫粮规划 接苹果 魔族密码 最大正方形 最大正方形2 奶牛比赛
然后就出来了:f[i][j][1]表示在第i秒在左边树下当前一件移动j次最多接多少个苹果,f[i][j][2]表示在第i秒在右边树下已经移动j次最多接多少个苹果。如果我们设置f[i][j]表示为右下角的最大正方形,因为不清楚是0还是1,所以不好转移。所以设置f[i][j][1]表示=1为右下角的最大正方形,f[i][j][0]表示=0。f[i][j]=f[i][j]||f[i][k]&&f[k][j](||表示只要有一个联通方式即可)?代码如下:(注意好初始化就行)
2024-03-29 19:59:07
1024
原创 【算法每日一练]
今日知识点:辗转相减法化下三角求行列式组合数动态规划打表约数个数等于质因数的次方+1的乘积求一个模数将n个不同的球放入r个不同的盒子:f[i][j]=f[i-1][j-1]+f[i-1][j]*j将n个不同的球放入r个相同的盒子:a[i][j]=a[i-j][j]+a[i-1][j-1]
2024-03-23 16:00:50
924
1
原创 【atcoder题解] Tile Pattern ,Swapping Puzzle , socks
今日知识点:二维前缀和逆序对袜子配对(感觉挺难的,又不知道说啥)
2024-01-10 21:12:21
1615
3
原创 【算法每日一练]-dfs 篇9 俄罗斯方块 ,ABC Puzzle ,lnc的工资 ,最大边权和
今日知识点:二维图形的状态压缩,存下所有的合法状态然后暴力遍历dfs的优化剪枝二项式定理。
2024-01-10 20:03:18
1608
原创 【算法每日一练】- 今天回顾一下写过的最蠢的代码 #旅游买票 竞争主席 #哨兵游戏 #最大边权和
今日知识点:整体考虑,把问题转化成装大于一半的背包问题两两点匹配问题,注意去重方式的dfs的写法。
2024-01-09 16:45:35
2532
3
原创 【算法每日一练]-动态规划 篇16 纸带 ,围栏木桩 ,四柱河内塔
今日知识点:计算最长子序列的方案个数,类似最短路径个数问题四柱河内塔问题:dp[i]=min{ (p[i-k]+f[k])+dp[i-k] }
2024-01-09 14:38:35
1281
原创 【算法每日一练]-图论 篇15 虫洞(模板题) ,无序字母对 ,旅行计划 ,最优贸易
今日知识点:两两点配对的建图方式,检查是否有环无向图欧拉路径+路径输出topo+dp求以i为终点的游览城市数建立分层图转化盈利问题成求最长路。
2024-01-06 19:58:37
1477
原创 【算法每日一练]-动态规划 篇15 动物 ,赶deadline ,page ,构造字符串
目录 今日知识点:01背包的路径输出计算位和的数位dp不用管字符串,只需要看好约束dp转移的变量动物 赶deadlinepage 构造字符串 有某类动物,可以在农场待n天,每天最多增加一只动物,第i天到来的动物每天要吃的粮食为c[i],现在初始粮食是X,问在每天动物尽可能多的情况下最多容纳多少只动物?输入: 输出:3 4 21 1 1思路:s所有动物要待在农场的
2024-01-05 13:46:44
1428
1
原创 【算法每日一练]-动态规划 篇14 三倍经验 ,散步 ,异或和 ,抽奖概率
目录 今日知识点:金字塔的正反dp两种方案,转移方程取决于dp的具体含义取模实现循环走m步回到原点的方案计算上升子序列的异或和,只需在统计上升子序列时使用最小结尾元素进行标记将亏本的概率转换各种情况的方案,然后统计亏本的情况的方案数烦求概率三倍经验散步 异或和抽奖概率 思路:首先不要考虑那么复杂,如果只是取数,但不考虑加倍的操作,那么就简单很多,只需要从下层想上层推导即可。保证每此都是最优解就行了。这个时候f[i][j]从f[i-1][j]和f[i-1][j-1]中来。那么自
2024-01-04 22:32:33
1514
原创 【算法每日一练]-dfs bfs 篇8 01迷宫 ,血色先锋队 ,求先序排列 ,取数游戏 ,数的划分
今日知识点:使用并查集映射点,构造迷宫的连通块vis计时数组要同步当回合的处理递归求先序排列基于不相邻的取数问题:dfs+回溯n个相同球放入k个相同盒子:dfs的优化分支暴力。
2024-01-03 23:04:51
1245
原创 【算法每日一练]-数论 篇3 越狱 ,找朋友 ,全部相同 ,方形 ,tax
今日知识点:基于涂色问题的组合数求所有数的最大公约数阶乘质因数分解哥德巴赫猜想。
2024-01-02 22:24:52
2388
4
原创 【算法每日一练]-数论 篇2 行列式 ,甜甜花研究 ,约数个数 ,模数 ,数树 ,盒子与球 ,数的划分
今日知识点:辗转相减法化下三角求行列式组合数动态规划打表约数个数等于质因数的次方+1的乘积求一个模数将n个不同的球放入r个不同的盒子:f[i][j]=f[i-1][j-1]+f[i-1][j]*j。
2024-01-02 20:46:57
595
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人