news 2026/4/23 5:32:02

凸包优化dp|partial_sum

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
凸包优化dp|partial_sum

lc3826

抽象为点积->凸包 投影

差集 下凸包

划分型dp f k i (fk-1 j) + (si-j)

struct vec {
long long x, y;
};

vec sub(vec a, vec b) {
return vec{a.x - b.x, a.y - b.y};
}

long long dot(vec a, vec b) {
return a.x * b.x + a.y * b.y;
}

// 如果乘法会溢出,用 __int128
__int128 det(vec a, vec b) {
return (__int128) a.x * b.y - (__int128) a.y * b.x;
}

class Solution {
public:
long long minPartitionScore(vector<int>& nums, int k) {
int n = nums.size();
vector<int> sum(n + 1); // nums 的前缀和
partial_sum(nums.begin(), nums.end(), sum.begin() + 1);

vector<long long> f(n + 1, LLONG_MAX / 2);
f[0] = 0;

vector<vec> q(n - k + 2);

for (int K = 1; K <= k; K++) {
int head = 0, tail = 0; // 模拟 deque

long long s = sum[K - 1];
q[tail++] = vec{s, f[K - 1] + s * s - s};

for (int i = K; i <= n - (k - K); i++) { // 其他子数组的长度至少是 1
s = sum[i];
vec p = {-2 * s, 1};
while (tail - head > 1 && dot(p, q[head]) >= dot(p, q[head + 1])) {
head++;

}

vec v{s, f[i] + s * s - s};
f[i] = dot(p, q[head]) + s * s + s;

while (tail - head > 1 && det(sub(q[tail - 1], q[tail - 2]), sub(v, q[tail - 1])) <= 0) {
tail--;

}
q[tail++] = v;
}
}

return f[n] / 2;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 9:40:22

Deepoc具身模型:让机械臂从“执行工具”变身“智能巧手”

在工业制造、精密装配、服务场景等领域&#xff0c;机械臂早已成为不可或缺的自动化装备&#xff0c;但传统机械臂始终受困于“编程依赖、场景适配弱、交互生硬”的短板——只能重复执行预设动作&#xff0c;面对工件位置偏移、型号切换等动态场景便难以应对&#xff0c;复杂任…

作者头像 李华
网站建设 2026/4/20 20:40:16

方盾 KN100:让煤矿从业者远离粉尘危害 安心坚守

煤炭行业作为能源供给的核心支柱&#xff0c;众多从业者扎根井下一线&#xff0c;以坚守保障着产业的稳定运转。然而&#xff0c;井下作业环境错综复杂&#xff0c;煤尘、岩尘等细微颗粒物弥漫其中&#xff0c;长期吸入这些颗粒物会引发煤工尘肺等严重的职业病&#xff0c;成为…

作者头像 李华
网站建设 2026/4/12 14:35:14

MindSpore 多模态大模型进阶:跨模态对齐增强 + 算力高效调度

在图文生成、视觉问答&#xff08;VQA&#xff09;等多模态任务中&#xff0c;“跨模态特征不对齐” 与 **“多编码器算力负载失衡”** 是制约模型性能的核心瓶颈 —— 前者导致文本 - 图像语义匹配精度低&#xff0c;生成内容 “文不对图”&#xff1b;后者使训练算力利用率不…

作者头像 李华