[bzoj1911][Apio2010特别行动队] (动态规划+斜率优化)
Description

Input

Output

Sample Input
- -
Sample Output
HINT

Solution
斜率优化动态规划
首先易得出这样的一个朴素状态转移方程
f[i]=max{f[j]+cal(sum[i]-sum[j])}
其中j<i,且cal(x)=a*x*x+b*x+c
那么设转移方程中的式子为V
若i<j,且V(j)>V(i)
那么,f[j]-f[i]+a*sum[j]^2-a*sum[i]^2+b*(sum[i]-sum[j])>2*a*(sum[j]-sum[i])*sum[i]
就可以斜率优化了
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int N=;
typedef long long ll;
inline ll sq(ll x){
return x*x;
}
inline int read(){
int x=,c=getchar(),f=;
for(;c<||c>;c=getchar())
if(!(c^))
f=-;
for(;c>&&c<;c=getchar())
x=(x<<)+(x<<)+c-;
return x*f;
}
int n,a,b,c,q[N];
ll sum[N],f[N];
inline double slope(int x,int y){
return (double)(f[y]-f[x]+a*(sq(sum[y])-sq(sum[x]))+b*(sum[x]-sum[y]))/(double)(*a*(sum[y]-sum[x]));
}
int main(){
n=read(),a=read(),b=read(),c=read();
for(int i=;i<=n;i++)
sum[i]=(ll)read()+sum[i-];
int l=,r=;
for(int i=;i<=n;i++){
while(l<r&&slope(q[l],q[l+])<sum[i])l++;
int t=q[l];
f[i]=f[t]+a*sq(sum[i]-sum[t])+b*(sum[i]-sum[t])+c;
while(l<r&&slope(q[r-],q[r])>slope(q[r],i))r--;
q[++r]=i;
}
printf("%lld\n",f[n]);
return ;
}
orz hzwer
[bzoj1911][Apio2010特别行动队] (动态规划+斜率优化)的更多相关文章
- BZOJ1911 [Apio2010]特别行动队 - 动态规划 - 斜率优化
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 UPD(2018-04-01):用Latex重打了公式…… 题意概括 把一个整数序列划分成任意连续的段,使得划分出 ...
- BZOJ1911 [Apio2010]特别行动队 【斜率优化】
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 5005 Solved: 2455 [Submit][Sta ...
- 2018.09.07 bzoj1911: [Apio2010]特别行动队(斜率优化dp)
传送门 斜率优化dp经典题. 题目中说的很清楚,设f[i]表示前i个数分配出的最大值. 那么有: f[i]=max(f[j]+A∗(sum[i]−sum[j])2+B∗(sum[i]−sum[j])+ ...
- BZOJ1911: [Apio2010]特别行动队(dp 斜率优化)
题意 题目链接 Sol 裸的斜率优化,注意推导过程中的符号问题. #include<bits/stdc++.h> #define Pair pair<int, int> #de ...
- 【BZOJ-1911】特别行动队 DP + 斜率优化
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3478 Solved: 1586[Submit][Statu ...
- 【BZOJ 1191】 [Apio2010]特别行动队 (斜率优化)
dsy1911: [Apio2010]特别行动队 [题目描述] 有n个数,分成连续的若干段,每段的分数为a*x^2+b*x+c(a,b,c是给出的常数),其中x为该段的各个数的和.求如何分才能使得各个 ...
- bzoj 1911 [Apio2010]特别行动队(斜率优化+DP)
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3191 Solved: 1450[Submit][Statu ...
- BZOJ 1911: [Apio2010]特别行动队( dp + 斜率优化 )
sum为战斗力的前缀和 dp(x) = max( dp(p)+A*(sumx-sump)2+B*(sumx-sump)+C )(0≤p<x) 然后斜率优化...懒得写下去了... ------- ...
- P3628 [APIO2010]特别行动队(斜率优化dp)
P3628 [APIO2010]特别行动队 设$s[i]$为战斗力前缀和 显然我们可以列出方程 $f[i]=f[j]+a*(s[i]-s[j])^{2}+b*(s[i]-s[j])+c$ $f[i]= ...
随机推荐
- python PIL比较图片像素
# -*- coding: utf-8 -*- from PIL import Image from pylab import * def compare_pic_L(pic1,pic2): #打开第 ...
- 25M电子琴实现
module qin(input clk,output reg beep,input [3:0] col,output [3:0] row_data,output [7:0]out ,input rs ...
- PHP流程控制之特殊结构
在前两节介绍的循环结构中,都是通过循环语句本身提供的条件表达式来指定循环次数执行代码块直到停止循环.但如果想在循环体执行过程中中止循环,或是跳过一些循环继续执行其他代码块,我们就需要一些特殊的流程控制 ...
- mybatis入门
1.什么是MyBatis ? 亲爱的度娘是这样说的: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation ...
- 解决jdk1.8上编译dubbo失败
首先从https://github.com/alibaba/dubbo/archive/master.zip下载最新源码,目前最新版本为2.5.4-SNAPSHOT. 我使用的是JDK 1.8.0_0 ...
- MySQL的SSL加密连接与性能开销
本文转载自:http://www.innomysql.net/article/23959.html(只作转载, 不代表本站和博主同意文中观点或证实文中信息) Contents [hide] 1 前言 ...
- MySQL 5.7:非结构化数据存储的新选择
本文转载自:http://www.innomysql.net/article/23959.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 工作10余年,没有一个版本能像MySQL ...
- c#使用json接口
前些日子将项目由使用数据库改版为使用接口,由于接口返回的xml中多了一些附加信息,导致xml转化后的DataTable无法储存在MemCache中.这时可以将xml序列化为其对应的类,当然由于当时对x ...
- 在sharepoint2013中如使用PowerView
在sharepoint2013中如使用PowerView 安装前提 Sql sqlserver 2012 sp1 Sharepoint2013 Sql server 2012 sp1 PowerPiv ...
- sharepoint2013的审核日志的时间区域设置
最近在项目中碰到审核日志的时间为GMT格式 ,如何格式化成本地时间. 网站集设置成本地区域无法解决此类问题,后来查询资料才知道.无法更改 Change Audit Time From GMT Time ...