Skip to content

Commit 0158e50

Browse files
committed
update comment
1 parent 0390368 commit 0158e50

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

copypasta/bits.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -421,10 +421,14 @@ func bitsCollection() {
421421
}
422422

423423
//(接上)考虑乘法
424-
// 给一数组 a,元素均为正整数,求区间和等于区间积的区间个数
425-
// 核心思路是对于每个区间右端点,其对应的区间积不会超过 sum(a),且由于乘积至少要乘 2 才会变化,所以区间右端点对应的区间积至多有 O(log(sum(a))) 个不同的值
426-
// 而每个前缀和都是不同的,所以区间右端点对应的答案个数也至多有 O(log(sum(a))) 个
427-
// 因此总的答案个数至多为 O(nlog(sum(a)))
424+
// 问题:给一数组 a,元素均为正整数,求区间和等于区间积的区间个数
425+
// 我们来考虑对每个区间右端点,有多少个合法的区间左端点
426+
// 核心思路是,对于每个满足题目要求的区间,其区间积不会超过 sum(a)
427+
// 由于乘积至少要乘 2 才会变化,所以对于一个固定的区间右端点,不同的区间积至多有 O(log(sum(a))) 个
428+
// 同时由于元素均为正数,所以对一个固定的区间右端点,区间左端点也至多有 O(log(sum(a))) 个
429+
// 据此我们只需要在加入一个新的数后,去重并去掉区间积超过 sum(a) 的区间,就可以暴力做出此题
430+
// 注:根据以上推导过程,我们还可以得出总的答案个数至多为 O(nlog(sum(a)))
431+
// https://www.dotcpp.com/oj/problem2622.html
428432
countSumEqMul := func(a []int) (ans int) {
429433
tot := 0
430434
for _, v := range a {

0 commit comments

Comments
 (0)