news 2026/5/10 21:25:01

凸包优化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/5/10 21:24:27

Next.js第二十五章(CSS方案)

Next.js CSS方案 在Next.js可以使用多种Css方案&#xff0c;包括&#xff1a; Tailwind CSS(个人推荐)CSS Modules(创建css模块化&#xff0c;类似于Vue的单文件组件)Next.js内置Sass(css预处理器)全局Css(全局的css&#xff0c;可以全局使用)Style(内联样式)css-in-js(类似于…

作者头像 李华
网站建设 2026/5/1 5:28:48

C语言学习记录——BC117 逆序输出

逆序输出_牛客题霸_牛客网 #include <stdio.h>int main() {int arr[10];for(int i0;i<10;i){scanf("%d",&arr[i]);//输入10个数&#xff0c;数组下标i从0开始到9结束}for(int i9;i>0;i--){printf("%d ",arr[i]);//逆序打印下标从9开始递减…

作者头像 李华
网站建设 2026/5/9 3:12:05

Deepoc具身模型:让无人机成为“跨场景任务的智能协同枢纽”

在应急勘探、生态守护、城市运维等多元场景中&#xff0c;无人机的空中机动性本应成为撬动作业效率革新的核心支点&#xff0c;但传统无人机始终未能突破“环境适配局限、任务协同孱弱、数据转化低效”的桎梏——面对复杂地形易失联、多任务并行难统筹、采集数据需人工二次研判…

作者头像 李华
网站建设 2026/5/8 13:01:49

金手指PCB故障预判分级修复与寿命延长策略

在金手指 PCB 的全生命周期中&#xff0c;合理的故障预判、分级修复与寿命优化&#xff0c;可避免小故障扩大为整机损坏&#xff0c;同时在不损伤核心结构的前提下&#xff0c;延长使用周期。很多用户缺乏故障判断能力&#xff0c;要么轻微污染就直接更换板卡造成浪费&#xff…

作者头像 李华
网站建设 2026/5/10 21:24:03

php 高精度数学扩展 bcmath 知识笔记

一、bcmath 简介bcmath 是 PHP 内置的高精度数学扩展&#xff08;Binary Calculator&#xff09;&#xff0c;专用于处理高精度和大数值的十进制运算&#xff0c;能够有效避免浮点数精度丢失问题。其核心机制是通过字符串形式存储和处理数值&#xff0c;并支持自定义运算精度。…

作者头像 李华