摘要: 题解 依据数据范围,暴力枚举自然不可行,则应当转变思维。 gcd(i, j) = d 表示 (i, j) 的最大公约数为 d,而 count(d) 则表示最大公约数为 d 的数对的个数,count(d) * d * d 则求解的为最大公约数为 d 的所有数的和,此时问题的核心则转化为如何求 coun 阅读全文
posted @ 2020-11-13 21:33 Fool_one 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题解 该题考察经典算法,可我还是太菜了...,不会做/(ㄒoㄒ)/~~。 正解应该是 dp + 前缀和优化,只解 n == 1 或暴力 dp 都会超时,怎么看出来的呢? dp: f[i][j][k] 表示第 i 层在 [j, k] 区间搭积木的总方案数,dp 方程很显然是 f[i][j][k] = 阅读全文
posted @ 2020-11-13 00:20 Fool_one 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 题解 当你第一次看到这个题的时候,你会想到什么算法呢? 当要求最小步数的时候,很显然,最快想到应该是 bfs,而非其它算法,这里需要注意一点的是,从时刻 m1 到 m2,我们需要求解的是时刻差,而与具体时刻是没有关系的,此时我们就可以从 0 开始,到其它任意时刻,是可以少一重循环的。 另外 bfs( 阅读全文
posted @ 2020-11-12 16:41 Fool_one 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题解 先看数据范围,n, k <= 1e6,如果采用队列解题,时间复杂度能达到 $O(n * k)$ 必定会超时。 显然,这一题应该采用数学方法,可用 $O(n)$ 的时间复杂度解决,如何解决呢? 我们先来看示意图: 这实际上是一个递推关系,f[i] 表示有 i 个人,从 1 开始报数,最后出局人的 阅读全文
posted @ 2020-11-10 16:20 Fool_one 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题解 方法一:海伦公式 中学数学中,已知三角形三条边即可求解该三角形的面积,而该公式为海伦公式。 p = (a + b + c) / 2,s = sqrt(p * (p - a) * (p - b) * (p - c))。 #include <iostream> #include <cmath> u 阅读全文
posted @ 2020-11-10 15:22 Fool_one 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题解: 该题也可采用双指针算法,但是有三个数啊? 这就是这一题考察的核心点所在,先枚举第一个点,另外两个点采用双指针算法,首先排序,然后去重,针对枚举第一个点,如果出现重复只取第一遍即可,后面重复元素可以直接 pass 掉。 对另外两个点,如果出现重复,可以与第一个点的做法相同,相同元素直接 pas 阅读全文
posted @ 2020-11-08 21:43 Fool_one 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 题解 这一题很经典,难吗?,想得到还是挺简单的。 该题的正解是 双指针 + 贪心 的策略,在其首尾各放一个指针,每次移动指针指向高度较小的数向内侧移动,在不断移动的过程中记录Max即可。 为何能保证得到最优解呢? 以图示验证算法的正确性: 这里采用反证法,先表示出最大区域面积,然后我们假设一个边长, 阅读全文
posted @ 2020-11-08 21:28 Fool_one 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 题解 题意相比上次奶酪工厂而言要简单很多。 做法也是一目了然的,从 2 - n - 1 中依次遍历,观察是否能删,如果能删,再用之前的一盏灯覆盖当前的灯即可,不能则不处理,这里需提前排好序。 #include <iostream> #include <algorithm> using namespa 阅读全文
posted @ 2020-11-06 00:34 Fool_one 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 题解 这是一道贪心题,实话说,还是挺考思维的,感觉大部分贪心都挺考思维的...。 首先这个题目的题意先要理解清楚,第 i 周 对应的单位奶酪价格为 ci,需交付 yi 的奶酪,而存储单位奶酪的价格 s 不会变化,可以进行奶酪存储。 本题的策略为: 价格比较,即之前单位奶酪的最低价 + 单位奶酪的存储 阅读全文
posted @ 2020-11-06 00:18 Fool_one 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 题解 这一题很显然是用栈来解决,但我还是决定写一下题解,因为最后一个有一个测试点总过不去。 首先栈中存储的是字符而不能是下标,为什么呢?,因为在匹配的过程中会出现 {[}],其实这是不匹配的,必须成对出现,即{[]},开始我应该是理解错了,用了三个栈,不过没必要。 #include <iostrea 阅读全文
posted @ 2020-11-01 17:14 Fool_one 阅读(204) 评论(0) 推荐(0) 编辑