随笔分类 -  CP

摘要:B. Playing with GCD 分析 尽管难度只有 1200*,不过是一道很有意思的题目,而且我的水平也就 1300*。 题目大意是给你一个有 n 个元素的数组 a,让你判断是否存在数组 b 使得 ai=gcd(bi,bi+1) 恒成立。 一开 阅读全文
posted @ 2024-05-08 14:02 ZXPrism 阅读(12) 评论(0) 推荐(0) 编辑
摘要:这段时间没有怎么练习,昨晚打 Div.4 的时候居然卡在 E 了 = =。不过,我觉得这两件事情并没有联系,纯粹是我太菜的缘故。 看 E 的官方题解时发现了一个比较 counter-intuitive 的东西: 注意最后一行:“所有小于等于 105 的数最多有 128 个因子”。作 阅读全文
posted @ 2024-03-29 19:35 ZXPrism 阅读(40) 评论(0) 推荐(0) 编辑
摘要:E. Vlad and an Odd Ordering 我很喜欢这道题,第一是因为它对我来说很难,第二是因为它体现了数学中的一些美妙而神奇的性质。惭愧的是,初见时我并没能做出来,看了 editorial 后也似懂非懂,直到两个星期之后,才总算理清楚思路,并且给出了一种略微复杂的解法——不知道和官方题 阅读全文
posted @ 2024-03-04 14:58 ZXPrism 阅读(44) 评论(0) 推荐(0) 编辑
摘要:最近渐渐地会做一些基础的 DP 题了,但是因为细节上没处理好,常常花很多时间去 debug,导致效率不高,因此打算写这样一篇(一系列)文章分析下 DP 的细节处理。 以这道 1500* 的 E. Block Sequence 为例,当我们得出了: (点击展开) $$ \begin{gather*} 阅读全文
posted @ 2024-03-03 16:39 ZXPrism 阅读(24) 评论(0) 推荐(0) 编辑
摘要:以 D. Divide and Equalize 为例,对于给定数组 a,这道题定义了一种操作:任意选择数组的两个元素 aiaj,使得 ai 变成 aix,同时 aj 变成 ajx,其中 \(x 阅读全文
posted @ 2024-03-03 14:14 ZXPrism 阅读(25) 评论(0) 推荐(0) 编辑
摘要:B. Equalize by Divide D. Divide and Equalize 做到 D. Divide and Equalize 的时候感觉似曾相识,翻了下以前写过的题解,发现自己确实做过类似的题,叫 B. Equalize by Divide,所以就想,不妨把所有这类题都收集在一起,提 阅读全文
posted @ 2024-03-03 12:49 ZXPrism 阅读(10) 评论(0) 推荐(0) 编辑
摘要:NOTE1: 本文并不包含树状数组的原理及实现。 NOTE2: 主要参考 树状数组 - OI Wiki 写成。 逆序对 对于给定数组 a,记下标为 i 的元素为 ai,定义逆序对 (i,j) 为满足: ai>aj, i<j的数对。 使用暴力方法求逆序 阅读全文
posted @ 2024-03-01 12:00 ZXPrism 阅读(30) 评论(0) 推荐(0) 编辑
摘要:最近不打算做新的题目了,先把之前打过的 contest 的题目都补完。我今天才发现,自己一直以来都陷入了这样一个误区,认为自己的水平还不够,经验积累得还不多,因此不能做高于 1900* 的题目……现在想来这个理由真是莫名其妙。如果不主动去做那些题,怎么积累相关的经验呢? 以上这些话与本文无关,只是想 阅读全文
posted @ 2024-02-29 12:23 ZXPrism 阅读(21) 评论(0) 推荐(0) 编辑
摘要:有些回溯题的 dfs 函数理论上需要多个返回值,比如 110. 平衡二叉树,这道题需要判断二叉树是否平衡。我们可以利用递归求出所有子树的高度,但同时也需要返回有关平衡的信息,特别地,当我们发现某个子树不平衡时,可以直接结束搜索以提高效率。一种做法是返回 pair,因为 “各个子树是否平衡” 之间是 阅读全文
posted @ 2024-02-26 16:35 ZXPrism 阅读(10) 评论(0) 推荐(0) 编辑
摘要:前言 接触 LeetCode 差不多有一个月了,按照专题断断续续做了八十几道题,虽然不多,但感觉确实有了很大的进步——从一开始的没有题解寸步难行,到现在能够完全独立做出那些从前 “完全无法想象的题目”,而本题就是其中之一。做过之后才发现,其实它并没有那么难。 分析 本题的关键词之一是 子数组。 首先 阅读全文
posted @ 2024-02-26 13:15 ZXPrism 阅读(9) 评论(0) 推荐(0) 编辑
摘要:引入 初学 DP,感觉循环顺序是 DP 的要点之一,遂尝试总结。 这里的 “循环顺序” 取决于循环变量在每一次循环执行完毕后是自增还是自减,而不是外层循环和内层循环的先后顺序。一般来说,自增对应正序,自减对应倒序。 循环顺序对于 DP 算法的正确执行来说非常重要,在多数情况下(从自己目前做过的为数不 阅读全文
posted @ 2024-02-24 16:38 ZXPrism 阅读(86) 评论(0) 推荐(0) 编辑
摘要:C. Vlad and a Sum of Sum of Digits 分析 在给定的数据规模下,可以直接暴力计算出每个数的数位之和,求出前缀和后就可以在 O(1) 的时间复杂度下返回答案,因为数位拆分的时间复杂度为 O(nlogn),所以总的时间复杂度为 O(nlogn+t) 阅读全文
posted @ 2024-02-20 15:46 ZXPrism 阅读(28) 评论(0) 推荐(0) 编辑
摘要:D. Vlad and Division 分析 题目要求是把给定数组划分成若干个组,使得每组中的任意两个数 x,y 对应二进制位的低 31 位均不相同,也就是 x+y=2147483647,求出最小的组数。 于是这道题就变成了经典的 2SUM 问题。假设一开始每个数都被分到一个独立 阅读全文
posted @ 2024-02-20 10:46 ZXPrism 阅读(75) 评论(0) 推荐(0) 编辑
摘要:]]]] 从今天开始正式学习 「传说中的 DP」。 首先看了 DP 的基本思想。 然后就开始尝试做题。 第一道题是 198. House Robber - 打家劫舍,因为之前练了挺久的暴搜,所以很快就写出了如下的代码: class Solution { public: int rob(vector< 阅读全文
posted @ 2024-02-09 22:48 ZXPrism 阅读(2) 评论(0) 推荐(0) 编辑
摘要:Codeforces Round 923 (Div. 3) 两个小时只做出来四道题。虽然是赛后补题,不过即便有赛时 buff 的加持,我感觉自己也只能做出来四道题,而且一如既往地把简单的东西搞复杂了,写了好多绕来绕去的代码。 不过我并没有灰心,只是因为经验不足,而已。 A. Make it Whit 阅读全文
posted @ 2024-02-08 17:30 ZXPrism 阅读(48) 评论(0) 推荐(0) 编辑
摘要:解法一:二维最大子段和 分析 自己想出来的解法,但凡出题人把输入的规模改大一点就通过不了。 做这道题的时候我拼命在想它和前一道题(84. Largest Rectangle in Histogram - 柱状图中最大的矩形)的关系。如果每一列的 '1' 都是连续分布的,且 “贴牢地面”,那么本题就退 阅读全文
posted @ 2024-02-06 12:46 ZXPrism 阅读(24) 评论(0) 推荐(0) 编辑
摘要:B. A Balanced Problemset? 分析 本题考查 GCD(Greatest Common Divisor, 最大公约数) 的性质。 很惭愧,这道题我不会做,于是我看了 editorial,并学到了新知识: \[GCD(a_1,a_2,a_3,\ldots,a_n) = GCD(a_ 阅读全文
posted @ 2024-01-30 09:37 ZXPrism 阅读(4) 评论(0) 推荐(0) 编辑
摘要:A. Tricky Template 分析 要求:判断是否存在与 a,b 匹配,但不与 c 匹配的 template。 首先,可以很快构造出一个与 a,b,c 均匹配的 template(提示:组成该 template 的字母全大写),接下来只需 阅读全文
posted @ 2024-01-28 11:53 ZXPrism 阅读(17) 评论(0) 推荐(0) 编辑
摘要:分析 首先观察题目条件: 2<=n<=1050<=height[i]<=104n 的范围来看,O(n2) 的暴力解法肯定是不行了; height[i] 的范围比较小,或许是突破口。 不过,还 阅读全文
posted @ 2024-01-24 19:56 ZXPrism 阅读(9) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示