SP18637 LAWRENCE - Lawrence of Arabia
\(\color{#0066ff}{ 题目描述 }\)
给定一个长度为n的序列,至多将序列分成m+1段,每段序列都有权值,权值为序列内两个数两两相乘之和。求序列权值和最小为多少?
\(\color{#0066ff}{输入格式}\)
第一行两个数 \(n, m\),
第二行为序列
\(\color{#0066ff}{输出格式}\)
输出一行为最小权值和
\(\color{#0066ff}{输入样例}\)
4 1
4 5 1 2
4 2
4 5 1 2
\(\color{#0066ff}{输出样例}\)
17
2
\(\color{#0066ff}{数据范围与提示}\)
\(n \le 500, a_i \le 20\)
\(\color{#0066ff}{题解}\)
考虑一段的贡献,就是\(\sum\)任意两个数乘机
其实就是完全平方式, 所有数的和的平方减去所有数的平方和就是2倍的两两乘积之和
再除以2就是区间的贡献
不难设出状态\(f[i][j]\)为前i个数,分成j段的最小权值和
那么转移\(f[i][j]=min\{f[k][j-1]+((s[i]-s[k])\times(s[i]-s[k])-(p[i]-p[k]))/2\}\)
通过打表发现,决策点是单调的,于是可以用四边形不等式进行优化
记录一下决策点的位置,可以优化成\(O(N^2)\)的复杂度
#include<bits/stdc++.h>
#define LL long long
LL in() {
char ch; LL x = 0, f = 1;
while(!isdigit(ch = getchar()))(ch == '-') && (f = -f);
for(x = ch ^ 48; isdigit(ch = getchar()); x = (x << 1) + (x << 3) + (ch ^ 48));
return x * f;
}
const int maxn = 505;
const int inf = 0x3f3f3f3f;
int f[maxn][maxn], s[maxn], p[maxn], a[maxn], q[maxn][maxn];
int n, k;
int main() {
n = in(), k = in();
for(int i = 1; i <= n; i++) {
s[i] = s[i - 1] + (a[i] = in());
p[i] = p[i - 1] + a[i] * a[i];
f[i][0] = (s[i] * s[i] - p[i]) >> 1;
}
for(int i = 1; i <= k; i++) q[n + 1][i] = n;
for(int j = 1; j <= k; j++) {
for(int i = n; i >= 1; i--) {
f[i][j] = inf;
for(int v = q[i][j - 1]; v <= std::min(i, q[i + 1][j]); v++) {
int now = f[v][j - 1] + (((s[i] - s[v]) * (s[i] - s[v]) - (p[i] - p[v])) >> 1);
if(f[i][j] > now) f[i][j] = now, q[i][j] = v;
}
}
}
printf("%d", f[n][k]);
return 0;
}
SP18637 LAWRENCE - Lawrence of Arabia的更多相关文章
- WC2019 填坑记
2019年1月8日 1.Luogu P2147 [SDOI2008]洞穴勘测 (LCT模板题&LCT学习) 2019年1月9日 2.LuoguP3203 [HNOI2010]弹飞绵羊 (LC ...
- (转)TCP注册端口号大全
分类: 网络与安全 cisco-sccp 2000/tcp Cisco SCCPcisco-sccp 2000/udp Cisco SCCp# Dan Wing <dwing&cisco ...
- 【Python3爬虫】当爬虫碰到表单提交,有点意思
一.写在前面 我写爬虫已经写了一段时间了,对于那些使用GET请求或者POST请求的网页,爬取的时候都还算得心应手.不过最近遇到了一个有趣的网站,虽然爬取的难度不大,不过因为表单提交的存在,所以一开始还 ...
- Mid-Atlantic 2008 Lawrence of Arabia /// 区间DP oj21080
题目大意: 输入n,m 输入n个数 将n个数切割m次分为m+1段,使得各段的Strategic Value总和最小 一组数a b c d的SV值为 a*b + a*c + a*d + b*c + b* ...
- 【HDOJ】【2829】Lawrence
DP/四边形不等式 做过POJ 1739 邮局那道题后就很容易写出动规方程: dp[i][j]=min{dp[i-1][k]+w[k+1][j]}(表示前 j 个点分成 i 块的最小代价) $w(l, ...
- HDU 2829 Lawrence(动态规划-四边形不等式)
Lawrence Problem Description T. E. Lawrence was a controversial figure during World War I. He was a ...
- hdu 2829 Lawrence(四边形不等式优化dp)
T. E. Lawrence was a controversial figure during World War I. He was a British officer who served in ...
- HDU 2829 - Lawrence - [斜率DP]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2829 T. E. Lawrence was a controversial figure during ...
- HDOJ 2829 Lawrence
四边形不等式优化DP Lawrence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
随机推荐
- Redis的持久化机制
持久化机制 RDB:快照模式AOF :日志模式 多数据库– 一个redis服务器内部默认有16个数据,编号О0-15– 默认操作是编号为0的数据库– 可以在命令行用select选择数据库127.0.0 ...
- Celery-4.1 用户指南: Canvas: Designing Work-flows(设计工作流程)
签名 2.0 版本新特性. 刚刚在calling 这一节中学习了使用 delay 方法调用任务,并且通常这就是你所需要的,但是有时候你可能想将一个任务调用的签名传递给另外一个进程或者作为另外一个函数的 ...
- .Net Memory Profiler入门
简介:http://www.cnblogs.com/wmlunge/archive/2013/01/08/2850809.html 实践: http://www.cnblogs.com/eaglet/ ...
- I/O完成端口(IOCP)
服务器: #include "stdafx.h" #include <winsock2.h> #pragma comment(lib, "ws2_32.lib ...
- python使用pyodbc连接sql server 2008
一.PyODBC的下载地址: http://code.google.com/p/pyodbc/ 二.测试语句 import pyodbccnxn = pyodbc.connect(DRIVER='{S ...
- 问题:iis配置json;结果:如何配置iis支持.json格式的文件
如何配置iis支持.json格式的文件 | 浏览:1357 | 更新:2015-04-05 11:00 | 标签:软件 1 2 3 4 5 6 7 分步阅读 现在大家在制作HTM5的一些小场景,小游戏 ...
- ABP模块配置
介绍 我们知道ABP中模块的配置都是通过模块的Configuration属性来设置的.例如在模块的生命周期方法中可以进行一系列的配置 审计 MQ Redis....也可以替换一些ABP默认配置 通常我 ...
- Shell编程进阶 1.3data命令
date命令是显示日期时间的命令 date 2016年 01月 01日 星期五 15:05:01 CST 修改时间的选项是 -s date -s "2016-01-01 12:56:10&q ...
- linux进程的软中断通信
linux进程的软中断通信 要求 实现软中断通信的程序 使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上发出的中断信号(即按delete键),当父进程接收到这两个 ...
- springmvc urlpattern配置详解
静态资源无法访问问题的解决方案: 1.使用Tomcat默认的Servlet解决:在web.xml中加以下代码