每日一题(4.24-5.1)

5.1-送外卖-DFS

来源:2021算法竞赛入门班第四节课搜索练习题——送外卖


dfs和bfs均可解决其他情况,但是难点在于怎么判断最小字典序的答案是否为无穷(Infinity!)。
答案无穷的情况只有一种,当前点选b后可以到达终点,但是选a后(字典序小)可以通过已知的环路重新回到此点
例如:xxx-b,xxx-(aba)-b,这里的“aba”是可重新回到这个点的环路,显然为了字典序小,可以填充无穷次这样的环路。

使用dfs,对于一个点,进行优先选a的深搜完后,就可以标记到哪些点是在环路上且这条路径是a开头的(即字典序小),那么在下一步的搜索里加上判断当前点是否会进入环路即可。
在这里插入图片描述

4.30-C1. Errich-Tac-Toe (Easy Version)—思维

来源:Codeforces Global Round 12——C1. Errich-Tac-Toe (Easy Version)


分析题意,仅改变所有横竖的三子相连,可将所有方块按斜向分成三种,即按 ( i+j )%3 有0,1,2三种,要求修改不超过k/3上限,选三种方块上X数量最少的那种情况把X替换成O即可完成
在这里插入图片描述

4.29-C. Berland Regional—思维

来源:Educational Codeforces Round 108 (Rated for Div. 2)——C. Berland Regional


思维,不要枚举寻找长度下符合条件的值(又T又WA还繁琐),而是判断这些值能对哪些长度产生贡献
在这里插入图片描述

4.28-Max Flow—树上差分+LCA

来源:牛客【每日一题】2021年4月14日题目精讲


树上差分:对于区间【a,b】,树上差分维护:d【a】++,d【b】++,d【lca(a,b)】- -,d【farther(lca(a,b))】- -。(倍增求LCA)
在这里插入图片描述

4.27-C-Mini Battleship—递归回溯

来源:2021年度训练联盟热身训练赛第六场——C Mini Battleship


最大5×5的图,最多有5支战舰队,战舰队是1×a【k】的矩形,即占据水平的a【k】个长度单位或者竖直a【k】个长度单位,给定的图中“X”处不能放置战舰,“O”处必须放置战舰,求战舰队的所有放置方案数。暴力递归枚举并回溯
在这里插入图片描述

4.26-I-Letter Wheels—预处理标记+枚举

来源:2021年度训练联盟热身训练赛第六场——I Letter Wheels


三个长度相等(最长5e3)的字符串s1,s2,s3,首尾相连,顺时针旋转:s【i】=s【(i+1)%len】,逆时针旋转:s【i】=s【(i-1)%len】。可对三个字符串任意旋转,求的是使三个字符串同一列上三个字符均不等的最少旋转数。
1.暴力法时间复杂度起飞,对其优化的预处理:对两两字符串标记顺时针旋转多少次这两个串某一位会相等。
2.需要想到这个结论:无论过程怎么转,最终结果肯定有一个字符串是不用动的。
3.那么我们假设s1串是不动的那个,接下来双层for枚举剩下两个串的旋转次数i,j,则这两个串的相对旋转次数是(i-j) ,使用预处理好的标记,对i,j,i-j三个旋转次数判断是否会出现相等处即可,并更新出最小答案。

在这里插入图片描述

4.25-F-Hopscotch—暴力枚举

来源:2021年度训练联盟热身训练赛第六场——F Hopscotch


n*n的数字矩阵,求出从数字1开始,不断向+1的数字走,最终到达数字k的最少步数,暴力枚举时间复杂度为n³
(用vector记录每个数字值在哪些位置来进行枚举)

ps:没细算时间复杂度,自信交了发O(n^n)的dfs。
在这里插入图片描述

4.24-D. Explorer Space—记忆化搜索orDP

来源:Contest 2050 and Codeforces Round #718 (Div. 1 + Div. 2)——D. Explorer Space


首先特判k为奇无解,然后对于k为偶数的情况,因题目要求k步包含出去和回来,则只需要使用(记忆化搜索|动态规划)的思想,获取到每个点向外走(k/2)步的最小消耗,答案即为此最小消耗的两倍
ps:赛时想到了k/2,但没憋出记忆化的代码,错失上大分的机会。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_45928596

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值