Loading

摘要: Solution: 根据这道题给出的数据范围可以知道这道题肯定用的是 \(\mathcal{O(t*n*\log(n))}\) 的算法。然后呢我们可以知道很明显的一个结论,就是你需要找到一条与其他所有线段相交的最多的一条线段,计算出有多少条线段与它不相交,然后这个与它不相交的线段的数量就是答案。 考 阅读全文
posted @ 2020-12-21 21:06 ForeverOIer 阅读(92) 评论(0) 推荐(0) 编辑
摘要: Solution: 这道题里面有一个性质,\(a[i]<a[k]\;,\;i>k\) 那么 节点 \(i\) 和节点 \(k\) 肯定不能有同一个父节点,因为保证输入过程是升序的。然后呢,我们就可以找一段最长的升序序列且没有被其他的点选择过的,我们就可以把这些点放在一层。可以看出这样肯定是最优的。 阅读全文
posted @ 2020-12-21 21:05 ForeverOIer 阅读(81) 评论(0) 推荐(0) 编辑
摘要: Solution: 看到这道题很显然可以想到贪心是假算法,所以我们需要考虑如何使用 \(dp\) 。因为本题需要的是关于时间的,并且要取出物品,所以我们可以设计 \(dp\) 状态为 \(f[i][j]\) 表示在 \(i\) 时刻,取了前 \(j\) 个物品。一共有三种转移状态: \(f[i][j 阅读全文
posted @ 2020-12-21 21:04 ForeverOIer 阅读(107) 评论(0) 推荐(0) 编辑
摘要: Solution: 根据题目描述我们可以知道一个事情,就是每当字符串 \(a\) 或 \(b\) 只要子串中多一位,那么答案就会少一,如果匹配的子序列多一个字母,那么答案就会多二。以此我们就可以设计出一个 \(dp\) 状态,\(f[i][j]\) 表示以字符串 \(a\) 的第 \(i\) 个位置 阅读全文
posted @ 2020-12-21 21:03 ForeverOIer 阅读(75) 评论(0) 推荐(0) 编辑
摘要: Solution: 这题不难想到一个 \(\mathcal{O(n^2)}\) 的朴素 \(dp\) 我们可以设计一个状态 \(f[i]\) 表示前 \(i\) 个名人,最多能拍到的名人数量。但是显然 \(\mathcal{O(n^2)}\) 的朴素 \(dp\) 过不了此题,所以考虑如何优化此题。 阅读全文
posted @ 2020-12-21 21:01 ForeverOIer 阅读(79) 评论(0) 推荐(0) 编辑
摘要: Solution: 这题很容易想到,如果想让序列变得有序,那么不管怎么样你肯定需要把前面比后面大的的位置记录下来,这里只需要记录最后一个位置。此时我们就可以从 \(1\) 遍历到我们记录的最后位置,如果这里的 \(a[i]\) 大于 \(x\) 那么我们就需要交换这两个数。当然最后还需要检查一遍,如 阅读全文
posted @ 2020-12-21 20:58 ForeverOIer 阅读(65) 评论(0) 推荐(0) 编辑
摘要: Solution: 看到这道题,很容易想到朴素算法所以这里不在赘述。在看到题面中 \(p\) 和 \(q\) 的数据范围的差距后,可以想出,我们此时不能将 \(p\) 分解质因数,而应该将 \(q\) 分解质因数。另外,显然如果 \(q\nmid p\) 那么答案就是 \(p\) 。考虑如何处理 \ 阅读全文
posted @ 2020-12-21 20:56 ForeverOIer 阅读(91) 评论(0) 推荐(0) 编辑