- 博客(16)
- 收藏
- 关注
原创 2024/8/8训练
本身题目数据是很小的,可以通过n^2的时间复杂度枚举每一个顶点,然后再通过n平方的时间复杂度枚举出另一个对角顶点,判断剩下的两个点是否在网格里面即可.这样的话时间复杂度是n的四次方时间复杂度了,可以通过.因为当这个数为假的时候,我们可以把这个数设为无穷数,那么当n个数都为真无法满足总和为s的情况,我们可以让前n-1个数都为真,然后通过最后一个数进行调节,满足n个数的总和为s的情况。给你一个长度为n的数组,然后你可以进行无数次操作:选择两个不同的数(x,y),设x为gcd(x,y),y为lcm(x,y).
2024-08-08 21:14:41
343
原创 AtCoder Beginner Contest 365
对于B的顺序,我们无法直接通过贪心来得到我们需要的答案,因为我们可以可以通过故意平手来达到控制我们出手顺序的结果.对于这个题目,我们可以发现无后效性,对于当前出什么,只受到前面一个出手的影响.对于补贴可以无限大的情况,当且只有数组的总和小于等于M才行。对于这一次出什么,我们把两种情况(平手或者胜利)都考虑了.因为我们需要找到x的最大值,直接通过二分查找X即可.直接用sort排序以后输出第二大的数的下标即可。给你一个年份,判断当前年份有多少天。A与B进行猜拳,已知A的出手顺序.给你一个数组,找到第二大的数。
2024-08-04 11:37:56
1096
原创 2024/7/30训练
对于每一次蛋糕分法,如果我们只是进行搜索的话,肯定会超时的,那我们就尽可能的贪心的想:先分配一个人的蛋糕,使得这个人满足的前提下划分的蛋糕最少,然后剩下的蛋糕再分给另一个人,同样也是满足的前提下划分的蛋糕最少,最后看剩下的蛋糕能否满足剩下那个人的要求即可。如果是-1或者1的情况,那么就说明一定有一个0,那么这里我们只能贪心的考虑,有-1我们就不管,有1我们就加上。这一题算是比较巧妙的一题,对于观众来说,无非就只有-2 , -1 , 0, 1 , 2这几种情况。
2024-07-30 19:49:46
947
原创 Trie树(字典树)
Trie树,也叫做字典树,是一种树形结构。往往用于统计和排序大量的字符串前缀来减少查询时间,最大限度的减少字符串比较。Trie树的核心便是用空间来换取时间,而Trie在算法中也往往采用数组来进行模拟,利用字符串的公共前缀来降低查询时间来达到提高效率的目的。下面这个图便是字典树。建立的字典树的流程便是如何查询查询的流程其实跟插入差不多。推荐例题题目链接给定 nnn 个模式串 s1,s2,…,sns_1, s_2, \dots, s_ns1,s2,…,sn 和 qqq 次询问,每次询问给定
2024-01-16 15:19:18
1004
1
原创 KMP算法
在某些时候,我们常常会出现字符串匹配的问题。例如:对于字符串s1,s2,判断s2在s1中出现的次数,正常来说,如果暴力枚举的话,我们需要使用O(n*m)的时间复杂度。有三位大佬就想出了KMP算法,保证了O(n+m)线性复杂度。
2024-01-16 11:51:23
1097
1
原创 寒假集训04day
但我们提交会提示超时,那么我们就开始考虑优化,对于高度和第几颗树,我们是无法优化的,但是从第几颗树跳过来,我们可以发现,无论j是多少,从第几颗树跳过来都是固定的最大值,那么我们可以用一个数组pr来存储i高度的最大值。一般来说,如果答案里面有无解的情况,我们一定要优先考虑无解的时候,那么看题目,如果没有1,那么我们肯定无法拼出所有的情况,反之,有1的话,我们肯定可以通过1来拼出所有的情况。逆向思考一下,我们先将两个数的差的倍数进行标记,然后我们再从小到大枚举一下,找到的第一个没有被标记的数就是我们需要的值。
2024-01-14 18:25:21
1130
1
原创 寒假集训03day
然后便是结束条件,正常考虑dfs走迷宫的结束条件便是到达终点,但这样的话时间复杂度会比较高,会超时,那么我们可以再创建一个数组p,这个p数组代表的是从起点到i,j的最小花费,这样我们就可以到每一个点的花费都是最小的,可以提前结束,剪枝的效果比正常深搜好很多。我们可以知道每一个青蛙的跳跃能力l,那么我们可以求每一个区间长度为l的石头个数,如果这个区间的石头个数小于其他的石头个数,那么在这个区间的石头个数的青蛙走过以后,这个区间就不能再有青蛙能过去了。的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。
2024-01-13 18:26:56
1035
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人