摘要:
原题链接 题解 1.我们没法遍历每个区间然后找出他们的最小值,所以我们考虑每个元素对答案的贡献 2.对于每一个元素来说,它的贡献等于它所在的区间长度乘上自身的值,这里的区间指的是以它为最小值的区间 3.以每个元素为最小值的区间要怎么求呢?我们将其转换成求左边第一个小和右边第一个小 对于这种问题(求序 阅读全文
posted @ 2024-03-25 22:06
纯粹的
阅读(25)
评论(0)
推荐(0)
摘要:
原题链接 题解 这里和线性最大两段子段和不同,没有子段之间必须间隔一米,所以处理方式略有不同 code #define ll long long #include<bits/stdc++.h> using namespace std; ll a[200005]={0},pre[200005]={0} 阅读全文
posted @ 2024-03-25 21:36
纯粹的
阅读(24)
评论(0)
推荐(0)
摘要:
原题链接 审题 1.连续子序列:子序列必须连续 2.最小长度为1 3.子序列之间至少隔一个数 题解 令 \(presum[i]\) 代表i及其之前的最大前缀和 则第一步更新令 \(presum[i]\) 为必须包括i的最大前缀和,第二步更新令其为i及其之前的最大前缀和。 sufsum同理 最后枚举断 阅读全文
posted @ 2024-03-25 15:53
纯粹的
阅读(60)
评论(0)
推荐(0)
摘要:
原题链接 题解 1.具体去考虑每个集合所包含的元素及其大小个数是非常繁琐的,所以我们考虑每个元素对答案的贡献 2. 令 \(f[now]\) 代表以 \(now\) 为根节点的答案 \(sizes[now]\) 代表以 \(now\) 为根节点所包含集合的个数 更新过程如下: \(f[now]+=f 阅读全文
posted @ 2024-03-25 14:30
纯粹的
阅读(23)
评论(0)
推荐(0)
摘要:
原题链接 题解 考虑以下决策,绝对最优: 1.按巧克力块的大小排序,先把大的块分出来。 2.一开始完整的巧克力是块矩形,取出一个正方形后,可以分为下方和右侧两个矩形,然后把这两个矩形放入优先队列。 3.分割下一个矩形时,从队列中取出 最短边最长的那个矩形,在这个矩形上做步骤2一样的分割 为什么这样的 阅读全文
posted @ 2024-03-25 13:56
纯粹的
阅读(25)
评论(0)
推荐(0)

浙公网安备 33010602011771号