征途(bzoj 4518)

BZOJ4518 Sdoi2016 征途 【斜率优化DP】 * BZOJ4518 Sdoi2016 征途 Description Pine开始了从S地到T地的征途。 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。 Pine计划用m天到达T地。除第m天外,每一天晚上Pine都必须在休息站过夜。所以,一段路必须在同一天中走完。 Pine希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可能小。 帮助Pine求出... 阅读详情

题目

Pine开始了从S地到T地的征途。
从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。
Pine计划用m天到达T地。除第m天外,每一天晚上Pine都必须在休息站过夜。所以,一段路必须在同一天中走完。
Pine希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可能小。
帮助Pine求出最小方差是多少。
设方差是v,可以证明,v×m^ 2是一个整数。为了避免精度误差,输出结果时输出v×m^ 2。

Input
第一行两个数 n、m。
第二行 n 个数,表示 n 段路的长度

Output
一个数,最小方差乘以 m^2 后的值

Sample Input
5 2
1 2 5 8 6

Sample Output
36

Hint
1≤n≤3000,保证从 S 到 T 的总路程不超过 30000

思路:这道题也是典型的斜率优化DP,不过自己之前没有好好看网上大神的代码,仅仅看了学姐给的代码,后来发现,学姐给的代码我估摸着只有她那种经常拿金牌的大佬才能看懂,思路不一样,以至于在网上学的时候很迷惑,这篇博客算是将自己带入"正轨",用平常的方法来做吧~

关于状态转移以及选取边界的问题可以看这位大佬的斜率优化DP

然后再看看这个落谷第二个解法,相信会有所启发的,鄙人不才,没有能力讲好~

个人注意点:
1.明白最后弄出来的一次函数,谁是变量,谁是因变量
2.明白枚举的是什么~

代码如下:

#include<cstring>
#include<cstdio>
#include<queue>
#define N 3005
#define int long long

int f[N][N];//纪录结果
int que[N];//记录队列
int sl[N];//纪录前缀和
int l[N];//纪律输入的
int n,m;

int min(int a,int b){return a<b?a:b;}
double slope(int u,int j,int k){return double(f[u][j]-f[u][k]+sl[j]*sl[j]-sl[k]*sl[k])/(double)(sl[j]-sl[k]);}
//这个嘛,就是算斜率,关键之处~

main(){
    scanf("%lld%lld",&n,&m);
    memset(f,0x3f,sizeof(f));
    for(int i=1;i<=n;++i)scanf("%lld",&l[i]);
    for(int i=1;i<=n;++i)sl[i]=sl[i-1]+l[i];
    int h,t;
    f[0][0]=0;
    for(int i=1;i<=n;i++)f[1][i]=sl[i]*sl[i];
    for(int p=2;p<=m;p++){//我没有滚动数组,只好用二维数组,枚举n^2
        h=1,t=0;//分别枚举的是f[i][j]中的i和j
        for(int i=1;i<=n;i++) { 
            while(h<t&&slope(p-1,que[h],que[h+1])<2*sl[i])h++;
            int j=que[h];
            f[p][i]=f[p-1][j]+(sl[j]-sl[i])*(sl[j]-sl[i]); 
            while(h<t&&slope(p-1,que[t-1],que[t])>slope(p-1,que[t],i))t--;
            que[++t]=i;
        }
    }
    int ans=m*f[m][n]-sl[n]*sl[n];
    printf("%lld\n",ans);
    return 0;
}
Linux环境下征途私服服务器架设详细教程 请注意,由于征途私服服务器涉及到游戏版权等法律问题,请确保您了解并遵守相关法律法规。征途私服服务器是一个允许玩家在本地搭建并运行自己的游戏服务器的解决方案。本文将为您提供在Linux环境下搭建征途私服服务器的详细教程,包括所需的源代码。创建一个新的MySQL数据库,并为征途私服服务器设置一个新的数据库用户。在开始之前,请确保您的Linux系统已经安装了必要的软件和依赖项。您可以从征途私服服务器的官方网站上获取最新的源代码。下载并解压缩源代码包。这将会编译和打包服务器源代码,并生成一个可执行的JAR文件。 阅读详情

相关推荐

新开征途私服万能通用登陆器1.52版.rar

完美兼容征途1.0以上的版本,支持网络搜索新开征途私服,一键自动添加征途私服,手动添加,账号在线注册,在线升级,自动寻找客户端等功能,并增加了一些登陆器相关的娱乐功能,如网络电影、电视、书等。

一套精美的私服发布网,适用任何游戏发布

演示地址:http://www.ztsf123.com:8080 下载地址:http://pan.baidu.com/s/1bnBuW3t 万能私服发布网,是独家研发系统。 针对目前各种私服发布网来说,取其精华综合的版本。 基本上任何私服发布都可以用,这个根据客户需求可以更改。 运行环境:Resin服务器,SqlServer数据库 作者QQ:254427888 系统功能简介:

cicinnus是程序员 8668

好征途原发布站

征途发布站源码程序,完整测试,ASP环境无需数据库。一件安装。修改配置文件后即可使用。方便快捷,可以更新每日新开私服信息.

紫装征途单机版+虚拟机一键端+GM账号

寒冰斗魂, 本人为了学习和研究软件内含的设计思想和原理,带了单机架设教程,不适用于联网,仅供娱乐。教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了。如果你是小白也没问题,跟着教程走也是可以搭建成功的,但是一定要有耐心。。。

wx_hadluo的博客 3046

征途专用数据库mysql 6.0.11 alpha

征途专用数据库mysql 6.0.11 alpha。

征途SF制作教程!!征途SF制作教程

征途SF制作教程.。包括安装个登陆器!!!!!!!!!!!!!!!

bzoj4518: [Sdoi2016]征途

题目链接 bzoj4518: [Sdoi2016]征途 题解 用\(a_i\)表示没天走的路程,\(s_i\)表示\(a_i\)的前缀和 得到式子 \(ans=m^2*{1\over m}[\sum\limits_{i=1}^m (a_i-{s_n\over m})^2]\) 展开化简得到 \(=m(\sum\limits_{i=1}^ma_i^2+{s_n^2\over m}-{2s_...

agtvo48266的专栏 168

征途单机版(非SF)下载及架设图文教程(整理后)

征途单机版(非SF)下载及架设图文教程(整理后)

BZOJ_4518_[Sdoi2016]征途_斜率优化

BZOJ_4518_[Sdoi2016]征途_斜率优化 Description Pine开始了从S地到T地的征途。 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。 Pine计划用m天到达T地。除第m天外,每一天晚上Pine都必须在休息站过夜。所以,一段路必须在同一天中走完。 Pine希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可能小。...

133

征途单机版gm工具全套

征途单机版gm工具全套,数据库修改,邮件工具,包裹修改等

征途服务端源码

可编译,可生成,可运行,国外找的,赚几个分,不够用拉, 此源码已经过测试,完全没有问题,编译过程中出现的缺少组件,请自行下载

bzoj4518[Sdoi2016]征途

bzoj4518[Sdoi2016]征途 题意: n个数,分成m段使每段和的方差尽可能小。 题解: 朴素的dp方程:f[i,m]=f[j,m-1]+(sum[i]-sum[j])2,j∈[1,i-1](sum[i]-sum[j]不用减平均数的原因是最后可以化简成f[n,m]*m-sum[n])复杂度为O(n3)会T,因为有个平方,所以考虑斜率优化,化简得到f[j,m-1]比f[k...

anheku1562的博客 145

各种AI的调试日记——辅助工作篇

记录使用各种AI(语言大模型)的心得和总结

m0_73056986的博客 1386

[BZOJ4518][Sdoi2016]征途

[BZOJ4518][Sdoi2016]征途 试题描述 Pine开始了从S地到T地的征途。 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。 Pine计划用m天到达T地。除第m天外,每一天晚上Pine都必须在休息站过夜。所以,一段路必须在同一天中走完。 Pine希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可能小。 帮助Pine求出最小方差是多少。 ...

weixin_30347009的博客 97

WhatsApp网页版扫码分析

扫码登录本质上是WhatsApp的多设备登录,设备之间可以独立运行,那么当我们首次通过WhatsApp扫码登录二维码时,到底发生了那些事情?交换了那些数据?

SocialMarketing的博客 5221

2019年电赛D题《简易电路特性测试仪》全过程

2019年全国大学生电子设计大赛D题《简易电路特性测试仪》硬件部分及故障分析

zzhao2580的博客 5万+

【BZOJ4518】[Sdoi2016]征途 斜率优化

【BZOJ4518】[Sdoi2016]征途 Description Pine开始了从S地到T地的征途。 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。 Pine计划用m天到达T地。除第m天外,每一天晚上Pine都必须在休息站过夜。所以,一段路必须在同一天中走完。 Pine希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可能小。 帮助Pine求出...

weixin_30678821的博客 71

【CTFhub】——hate_php2021

【CTFhub】——hate_php2021

manerzi的博客 1591

BZOJ 4518: [Sdoi2016]征途

二次联通门 :BZOJ 4518: [Sdoi2016]征途 LibreOJ :LibreOJ#2035. 「SDOI2016」征途 /* BZOJ 4518: [Sdoi2016]征途 裸斜率优化 */ #include <cstdio> #include <iostream> ...

weixin_30367169的博客 65

Windows 11下Dify安装部署实战指南

本文详细介绍在Windows 11环境下部署开源LLM应用开发平台Dify的完整流程。涵盖环境准备(WSL 2启用、Docker Desktop安装配置)、源码获取、Docker容器化部署、数据库初始化、服务启动验证等核心步骤。包括环境变量配置、性能优化、安全加固、端口冲突解决、数据库连接故障排查等关键技术要点。为开发者提供从零到一的Dify本地化部署实战指南

weixin_44269410的博客 847

AI Agent Harness实时监控大屏搭建实战

本文将以目前主流的AI Agent管控框架Harness为基础,结合React、ECharts、WebSocket技术,手把手带你搭建一套完整的实时监控大屏,覆盖全局概览、状态分布、工具调用统计、异常告警、实时日志等核心功能,不需要复杂的底层开发,复制代码就能快速跑通。本文我们从需求出发,先梳理了AI Agent的核心监控指标,然后搭建了监控大屏的静态布局,逐个实现了各个图表,对接了Harness的实时数据源,最后加了交互和告警功能,完整走了一遍监控大屏从设计到落地的全流程。

大数据洞察的博客 145

bzoj4518【SDOI2016】征途

斜率优化DP

AaronPolaris 3732

Flink实战案例(十三):Flink DataStream 八大分区策略与自定义分区器

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 分区策略决定了一条数据如何发送给下游。Flink中默认提供了八大分区策略(也叫分区器)。 本文基于Flink 1.9.0总结Flink DataStream中的八大分区策略以及手动实现一个自定义分区器。 八大分区策略继承关系图 ChannelSelector: 接口,决定将记录写入哪个Channel。有3个方法: void setup(int numberOfChannels):

微信搜:import_bigdata,大数据领域硬核原创作者 1116
上一篇: 玩具装箱 TOY(HNOI2008)
下一篇: Watching Fireworks is Fun(CF372C)
楚仙子
博客等级 码龄8年 34粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值