hdu-3480-Division-dp-斜率优化

dp斜率优化 Hdu 3480 Division 题解 累加器传送门::http://blog.csdn.net/NOIAu/article/details/71775000题目传送门:https://vjudge.net/problem/HDU-3480题目:Little D is really interested in the theorem of sets recently. There’s a problem that confused him 阅读详情

题意就是:一段区间的值就是max-min的平方,求n个点分成m线段的最小值

基本的DP式子是dp[i][x]=dp[j][x-1]+(a[i]-a[j+1])^2

然后用斜率优化

yj=dp[j][x-1]+a[j+1]^2

xj=2*a[j]

不等式为(yj-yk)/(xj-xk)<=a[i];


代码:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxn 11111
int n,m;
int a[maxn];
int sum[maxn];
int dp[maxn][maxn];
int tot;
int gg[maxn];
int getDP(int i,int j,int x) {
    return dp[j][x-1]+(a[i]-a[j+1])*(a[i]-a[j+1]);
}
int getUP(int j,int k,int x) {
    return a[j+1]*a[j+1]+dp[j][x-1]-(a[k+1]*a[k+1]+dp[k][x-1]);
}
int getDOWN(int j,int k) {
    return 2*(a[j+1]-a[k+1]);
}
int main()
{
    int t;
    int kase=0;
    scanf("%d",&t);
    while(t--) {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        int head,wei;
        for(int i=1;i<=n;i++) dp[i][1]=(a[i]-a[1])*(a[i]-a[1]);
        for(int x=2;x<=m;x++) {
            head=1;wei=2;
            gg[1]=x-1;
            for(int i=x;i<=n;i++) {
                while(head+1<wei&&getUP(gg[head+1],gg[head],x)
                      <=a[i]*getDOWN(gg[head+1],gg[head]))
                    head++;
                dp[i][x]=getDP(i,gg[head],x);//OK
                while(head+1<wei&&getUP(i,gg[wei-1],x)*getDOWN(gg[wei-1],gg[wei-2])
                      <=getUP(gg[wei-1],gg[wei-2],x)*getDOWN(i,gg[wei-1]))
                    wei--;
                gg[wei++]=i;
            }
        }
        printf("Case %d: %d\n",++kase,dp[n][m]);
    }
    return 0;
}



基于Python和CNN的车牌识别实战:字符分类器训练与流水线拆解 在计算机视觉领域,车牌识别是典型的图像识别应用。传统端到端深度学习方法需要海量完整车牌样本,且定位与识别错误耦合,难以排查。卷积神经网络(CNN)作为深度学习核心模型,擅长自动提取图像特征,已在字符识别等细分任务中展现出高准确率与强泛化能力。本文从工程实践角度出发,讲解如何将车牌识别拆分为定位、分割、识别三阶段,利用OpenCV进行颜色阈值定位与形态学处理,并自主训练一个轻量级CNN字符分类器,将七位车牌转化为65类单字符分类问题。这一方案降低了数据收集难度与算力需求,单字符准确率达98%以上,适合个人开发 阅读详情

相关推荐

SQL Prompt 9.0插件突然无法使用解决办法(附防联网激活)多图+文字

可能由于Redgate公司最近抓盗版抓得严,导致激活后的SQL Prompt联网后突然无法使用,无论卸载重装都没办法继续使用,本人同时使用SQL Assistant和SQL Prompt,我喜欢SQL Assistant代码提示功能,而SQL Prompt我喜欢将查询结果复制后可以直接生产插入脚本,这是最爽的一件事,即便对表有多么熟悉,没有这些插件,几行语法都要敲大半天,目前本人已经离不开这两个插...

骚团长的博客 1万+

HDU 3480 Division(斜率DP裸题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3480 题目大意:将n个数字分成m段,每段价值为(该段最大值-该段最小值)^2,求最小的总价值。 解题思路:很单纯的斜率优化DP,得出状态转移方程:dp[i][j]=min{dp[k][j-1]+(a[i]-a[k+1])^2}(j-1<=k<i),然后斜率优化降到O(n^2)...

weixin_30412577的博客 107

o型圈沟槽设计_O型密封圈——详细选型过程及步骤

一、密封圈常用材料二、密封圈常用密封形式密封圈分为活塞密封,活塞杆密封,端面密封,旋转密封。三、O型密封圈的选型规则O型密封圈的尺寸图径向安装O型圈选型(静态和动态运动)活塞杆密封选择适当规格的O形圈时,应该保证其外径(d1+2*d2)至少等于或者大于沟槽外径d6;当选择的O形圈直径d1大于250 mm时, O形圈外径将不能超过沟槽外径的3%;当选择的O形圈直径d1小于250mm时, O形圈外径将...

weixin_39856630的博客 2万+

HDU-3480 Division 【DP+斜率优化(二维)】

题目链接 题意 定义一个集合的花费是这个集合中的最大值减最小值的平方。然后给定一个集合S,求对这个集合的一个覆盖,使得所有子集的花费和最小。 分析 本身这个题是非常简单的,只是今天看了别人的题解,我发现我以前写的二维斜率优化都写复杂了。直接外层循环用未被优化的那一维就行了,不用像我以前那样维护一个k维的单调队列……我说怎么不对劲,每次看别人的代码都那么...

babao9492的博客 211

【国密】基于SM2的协同签名与协同解密方案

两方协同签名指客户端与服务端协同完成签名、验签操作,具体实现方案参考了信工所专利[3]。在业务应用中,两方或多方的协同签名一般采用门限签名方案可以用来构造。门限密码算法在多方协作的相关场景中应用十分广泛,可以实现数据联合授权、认证、密钥安全恢复、密钥安全交换等需求,在诸多分布式多方计算协议中均可见其身影。在上述两方协同签名方案中,最巧妙的地方在于签名值s分量的构造,通过一些列数学变换,得以恢复。以下从两方协同签名方案介绍入手,介绍门限密码在协同签名中的应用。解决上述问题的关键在于门限密码算法的巧妙构造。

听雨草堂 8376

2025华为杯第二十二届中国研究生数学建模竞赛C题:围岩裂隙精准识别与三维模型重构 - 完整解题分析+完整MATLAB源码!(下篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1603

Division(斜率优化 四边形优化 dp)

原题: http://acm.hdu.edu.cn/showproblem.php?pid=3480 题意: n个数排序后,分成多段,每一段是最大值减最小值的平方,求和的最小值。 解析: 老套路: dp[i][j]dp[i][j]dp[i][j]表示前面j个数分成i段的最小值,有dp[i][j]=min(dp[i−1][k]+(s[j]−s[k+1])2)dp[i][j]=min(dp[i-1][...

QAQ 449

回归预测 | MATLAB实现MPR多元多项式回归

回归预测 | MATLAB实现MPR多元多项式回归

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 1635

HDU 3480 Division DP斜率优化

解题思路 第一步显然是将原数组排序嘛……然后分成一些不相交的子集,这样显然最小。重点是怎么分。 首先,我们写出一个最暴力的\(DP\): 我们令$F[ i ][ j ] $ 为到第\(i\)位,分成\(j\)组的代价,我们可以写出如下 $ DP$ for( LL i = 1; i <= N; ++i ) F[ i ][ 1 ] = sqr( A[ i ] - A[ 1 ] ); f...

TIANFENG_123456的博客 249

(三十九)Flask 多应用架构(Multiple Apps)与 DispatcherMiddleware 实战解析

(三十九)Flask 多应用架构(Multiple Apps)与 DispatcherMiddleware 实战解析

孤寒者的博客 1万+

9篇2章2节:GBD 数据库的数据申请详解

无论您是初入公共卫生领域的学生、资深的科研工作者,还是政策决策者,GBD数据库都将成为您数据分析与决策支持中不可或缺的重要工具。

MD Code 2582

HDU 3480 Division 斜率优化DP

题意:现在有N个元素的集合S。把集合S划分成M个子集,每个子集的花费为集合中最大和最小元素的差的平方。 求如何划分,才能总的代价最小。 思路:首先要注意到,因为集合中的元素具有无序性,我们只需知道集合中最大和最小的元素就能算出代价,也能把集合划分出来。 所以,我们把所有元素进行排序,这样,最小的元素和最大的元素的位置就是已知的了。 定义:dp[i][j]将前j个元素划分成i个子集得到的最小花

leodestiny 698

GD32F303标准库开发:Keil5新建GD32标准库工程

GD32F303标准库开发:Keil5新建GD32标准库工程

MQ0522的博客 8885

hdu 3480 Division 斜率优化DP

Division Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 999999/400000 K (Java/Others)Total Submission(s): 5883Accepted Submission(s): 2337 Problem Description Little D is really ...

YZ930035683的博客 225

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HDU3480 Division —— 斜率优化DP

题目链接:https://vjudge.net/problem/HDU-3480 Division Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 999999/400000 K (Java/Others)Total Submission(s): 5304Accepted Submission(s): 2...

alince20008的博客 252

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU3480(Division 斜率优化dp入门题)

题目 题意: n个数分成m组,每组的花费是(max-min)^2,求最小花费; 先对所有数字的权值从小到大排序。 dp[i][j]:前 j 个数分成 i 组. 则转移方程为:dp[i][j]=dp[i-1][k]+(a[j]-a[k+1])^2.(0<=k<j) 把外层循环 i 看作定值,j 是状态变量,k 是决策变量。方程存在项 2 * a[j] * a[k+1],应考虑使用斜率优化...

qq_42576687的博客 374

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

hdu 3480 Division(斜率优化DP)

题目链接:hdu 3480 Division 题意: 给你一个有n个数的集合S,现在让你选出m个子集合,使这m个子集合并起来为S,并且每个集合的(max-min)2 之和要最小。 题解: 运用贪心的思想,肯定首先将全部的数排好序,然后设dp[i][j]表示前j个数分为i个集合的最优解。 则有dp[i][j]=min{dp[i-1][k]+(a[j]-a[k+1])2}(0<k&lt...

weixin_30867015的博客 146

HDU3480 Division【二维斜率优化DP+滚动数组】

Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 999999/400000 K (Java/Others) Problem Description Little D is really interested in the theorem of sets recently. There’s a problem that conf...

MaJorieL 188

hdu 3480 Division(斜率优化DP)

Division Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 999999/400000 K (Java/Others) Total Submission(s): 2066    Accepted Submission(s): 817 Problem Description Little D is really

记录成长的点点滴滴. . . . . 1414

hdu 3480 Division 斜率优化dp

题意:给出n个数,分为m组,求min{∑(Max−Min)2}min\{\sum (Max-Min)^2 \} N (≤ 10,000) and M (≤ 5,000)解法:序列划分+斜率优化代码:

便纵有千种风情 414

HDU 3480 Division (两个状态的斜率优化DP)

Division Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 999999/400000 K (Java/Others) Total Submission(s): 5327    Accepted Submission(s): 2103 Problem Description Little D is really

咸鱼有梦想 307

HDU 3480 DP 斜率优化 Division

把n个数分成m段,每段的值为(MAX - MIN)2,求所能划分得到的最小值。 依然是先从小到大排个序,定义状态d(j, i)表示把前i个数划分成j段,所得到的最小值,则有状态转移方程: d(j, i) = min { d(j-1, k) + (ai - ak+1)2 | 0 ≤ k < i } 设 l < k < i,且由k转移得到的状态比由l转移得到的状态更优。 ...

weixin_30883311的博客 90

HDU 3480 Division(斜率优化DP)

Division Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 999999/400000 K (Java/Others)Total Submission(s): 1672    Accepted Submission(s): 630 Problem Description Little D is really intere...

weixin_34185560的博客 98
上一篇: HDU-2829-Lawrence-dp-斜率优化
下一篇: HDU-4919-数学推导加Java大数
lyc1635566ty
博客等级 码龄11年 26粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值