- 博客(7)
- 收藏
- 关注
原创 关于离散化的一点话
是一种数据处理技巧,其本质可以看成是一种哈希,保证数据在哈希之后可以保持原来的 全/ 篇序关系。其实更通俗一点来讲呢就是如果说数据只与他们的相对大小有关,而和具体数值无关时就可以采用离散化。好处是什么呢,在不改变原来属性的情况下极大缩小空间复杂度和时间复杂度讲这么多还是有点抽象,举个例子吧,比如一棵有根树,树上每个点都有值 A_i ,这个时候让你找出有多少条路径使得每个节点的数值都不同。这个时候要求数值不同,但没说数值具体,就可以使用离散化。
2024-09-01 15:46:34
976
1
原创 关于取模,以及一些模的性质
在做题的时候,容易时不时的发现需要用到一些取模,我是个小蒟蒻,取模这种题总是不会,然后我总结了一些取模的一些性质,希望对大家有一点帮助。分配律 a * (b + c) \mod m = (a * b \mod m + a * c \mod m) \mod m。如结合律 (a * b) \mod m = ((a \mod m) * (b \mod m)) \mod m。还有 (x + C) \mod C = x 这里的C是一个很大的数喔。a \mod C = a 这里的 a 是一个很小的数,C 同上。
2024-05-04 16:01:05
739
原创 五月二日div3有感而发
老规矩先读入,然后进行一个类似 dp 转移的东西,非常的神奇。b 数组很好处理,就是遍历, a 数组稍稍不一样一点点就是会从上一个是否利用后进行一个转移。这道题我之前也遇到过,但是很显然没做对。因为我一直想的暴力是遍历两个,或者直接 `find` 去查找,但是今天第一次接触这么做,非常的神奇好吧。这就非常非常非常神奇,奇思妙想,大佬真的好聪明。
2024-05-03 17:51:09
556
原创 关于停止读入
很多时候做题做多了就会发现,**一行单独的 00 表示输入结束**这种话,那这种时候该怎么去做呢(因为我是一个小蒟蒻,现在才遇到呜呜,大佬轻喷)这种方式就要采用循环了,好吧上面也是循环,但是这种会稍微复杂一点点。嘿嘿这样读入,要满足输入 x 不为零的条件。两种都是看个人喜好吧只能说。
2024-04-27 16:53:19
224
原创 洛谷 P1387 最大正方形 (深搜,动态规划)
f 我们这里看成的是一个正方形的右下角,转移方程:`f[i][j] = std::min(std::min(f[i - 1][j], f[i][j - 1]), f[i - 1][j - 1]) + 1` 具体怎么转移呢,看图这样转移就很明显看出来最大正方形是 3 啦。这道题有两种解决方法,第一种就是暴力搜索,第二种是动态规划,至于为什么写在这里来呢,主要是我没看出来这是一道动态规划,我觉得很神奇第一种:深搜。欧克啊,第二种动态规划,说说思路,正方形只能是从左边或者从右边转移过来的。
2024-04-26 19:28:34
350
原创 关于差分滴滴
差分:$ b_1 = a_1, b_2 = a_2 - a_1 \ldots, b_n = a_n - a_{n - 1}$ ,那么他有哪些性质呢,我们来看看。关于差分,简单来说就是两个数的差,也就是在数组 $a[n]$ 中 $a_1, a_2, a_3,\ldots, a_{n - 1}, a_n$ ,原序列 $a:1, 3, 4, 2, 1$,其差分序列 $b:1, 2, 1, -2, -1$如果$a[l,r]-1$,则$b[l]-1,b[r+1]+1$;性质三:判断单调性,用 b 的正负判断。
2024-04-25 23:14:19
570
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅