news 2026/6/10 3:07: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/6/5 15:22:36

基于ADRC的电机控制仿真研究:直流电机与永磁同步电机的多重仿真分析

基于ADRC的电机控制仿真源文件 模型主要包含&#xff1a; 1.直流电机ADRC仿真 2.永磁同步电机ADRC仿真-速度环 3.永磁同步电机ADRC仿真-电流环 永磁同步电机ADRC仿真-速度环和速度环电机控制领域这两年ADRC的热度肉眼可见地往上窜&#xff0c;这玩意儿抗扰动的特性确实香。今天…

作者头像 李华
网站建设 2026/6/5 15:06:49

荣耀magic6pro首发评测 领先技术重新定义旗舰体验

microsoftedge怎么改默认网页 2026年刚刚开始,旗舰手机市场便开启了新一轮“内卷”。近期,荣耀Magic6系列旗舰手机正式开售,首销当天即创造“荣耀历史”,打破历代新机首销日纪录。作为旗舰中的标杆,荣耀magic6pro更是汇聚多项行业领先技术,为消费者重新定义高端手机使用体验。 …

作者头像 李华
网站建设 2026/6/5 20:32:19

CMake链接库教程:target_link_libraries用法详解

在CMake项目中&#xff0c;管理库文件的链接是关键一环。target_link_libraries命令正是为此而生&#xff0c;它直接定义了目标&#xff08;如可执行文件或库&#xff09;所依赖的其他库。理解并正确使用这个命令&#xff0c;能够有效避免链接错误&#xff0c;构建清晰的依赖关…

作者头像 李华
网站建设 2026/6/6 7:29:15

【30天精通汇编】Day 1: 计算机基础与二进制

【30天精通汇编】Day 1: 计算机基础与二进制&#x1f4c5; 学习时间&#xff1a;3-4小时 &#x1f3af; 学习目标&#xff1a;理解计算机底层原理&#xff0c;掌握二进制运算 &#x1f4a1; 难度&#xff1a;★☆☆☆☆ &#x1f4cb; 前置要求&#xff1a;零基础可学&#x1f…

作者头像 李华
网站建设 2026/6/8 18:14:18

探秘《Hands on Large Language Models》:开启大模型学习之旅(附教程)

今天要给大家介绍一本在大语言模型领域超有分量的新书 ——《Hands on Large Language Models》。目前已经正式发布&#xff0c;干货满满&#xff0c;绝对能让你抢先一步深入大语言模型的奇妙世界。 当大语言模型遇上 “实战指南” 这几年&#xff0c;大语言模型那可是火得一塌…

作者头像 李华
网站建设 2026/6/5 19:59:37

降AI工具安全吗?论文会被收录吗?2026年隐私保护指南

降AI工具安全吗&#xff1f;论文会被收录吗&#xff1f;2026年隐私保护指南 用降AI工具处理论文&#xff0c;安全吗&#xff1f;会不会被收录到数据库&#xff1f; 这是很多同学担心的问题。毕竟论文是自己的心血&#xff0c;万一被泄露或收录就麻烦了。 这篇文章帮你搞清楚…

作者头像 李华