题意:链接

方法:斜率优化DP

解析:这题BZ的数据我也是跪了,特意去网上找到当年的数据后面二十个最大的点都过了。就是过不了BZ。

看到这道题自己第一发DP是这么推得:

设f[i][j]是第j次分第i个的最大得分。

那么会推出来f[i][j]=max(f[k][j−1]+sum[i k]∗sum[1 k−1]或(sum[k i]∗sum[i+1 n]))然后我发现这个式子的复杂度非常高暂且不说。就光那个或的讨论就非常费劲。

于是想了想就放弃了这个念头。中规中矩的去想。

依照以往的思路设出状态f[i][j]代表前i个分j次的最大得分。

能推出转移方程

f[i][j]=max(f[k][j−1]+sum[k]∗(sum[j]−sum[k]))

之后对于例子手写一遍看出它的正确性后进行后面的讨论

我们发现假设n^2的枚举是肯定不行的。所以才去一种方式进行维护,由于有k的元素的存在,所以从斜率角度入手。

详细推导过程就不写了,得出的结果是:

f[j][tmp异或1]−f[k][tmp异或1]+sum[k]2−sum[j]2sum[k]−sum[j]<=sum[i]

则说明k比j优。

所以尾部就是维护g[j,k]

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 100010
#define K 210
using namespace std;
typedef unsigned long long ll;
ll sum[N],a[N],f[N][2],q[N];
ll n,k;
int tmp;
ll fy(int j1,int j2,int d)
{
return f[j1][d]-f[j2][d]+sum[j2]*sum[j2]-sum[j1]*sum[j1];
}
ll fx(int j1,int j2)
{
return sum[j2]-sum[j1];
}
int main()
{
scanf("%llu%llu",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%llu",&a[i]);
sum[i]=sum[i-1]+a[i];
}
tmp=0;
for(int j=1;j<=k;j++)
{
tmp^=1;
int head=0,tail=0;
q[head]=0;
for(int i=1;i<=n;i++)
{
while(head<tail&&fy(q[head],q[head+1],tmp^1)<=fx(q[head],q[head+1])*sum[i])head++;
while(head<tail&&fy(q[tail-1],q[tail],tmp^1)*fx(q[tail],i)>=fy(q[tail],i,tmp^1)*fx(q[tail-1],q[tail]))tail--;
int t=q[head];
f[i][tmp]=f[t][tmp^1]+sum[t]*(sum[i]-sum[t]);
q[++tail]=i;
}
}
printf("%llu\n",f[n][tmp]);
}

BZOJ 3675 APIO2014 序列切割 斜率优化DP的更多相关文章

  1. BZOJ 3675 [Apio2014]序列分割 (斜率优化DP)

    洛谷传送门 题目大意:让你把序列切割k次,每次切割你能获得 这一整块两侧数字和的乘积 的分数,求最大的分数并输出切割方案 神题= = 搞了半天也没有想到切割顺序竟然和答案无关...我太弱了 证明很简单 ...

  2. bzoj3675[Apio2014]序列分割 斜率优化dp

    3675: [Apio2014]序列分割 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 3508  Solved: 1402[Submit][Stat ...

  3. 【bzoj3675】[Apio2014]序列分割 斜率优化dp

    原文地址:http://www.cnblogs.com/GXZlegend/p/6835179.html 题目描述 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列 ...

  4. [APIO2014]序列分割 --- 斜率优化DP

    [APIO2014]序列分割 题目大意: 你正在玩一个关于长度为\(n\)的非负整数序列的游戏.这个游戏中你需要把序列分成\(k+1\)个非空的块.为了得到\(k+1\)块,你需要重复下面的操作\(k ...

  5. BZOJ 3675: [Apio2014]序列分割( dp + 斜率优化 )

    WA了一版... 切点确定的话, 顺序是不会影响结果的..所以可以dp dp(i, k) = max(dp(j, k-1) + (sumn - sumi) * (sumi - sumj)) 然后斜率优 ...

  6. 【斜率DP】BZOJ 3675:[Apio2014]序列分割

    3675: [Apio2014]序列分割 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 1066  Solved: 427[Submit][Statu ...

  7. P3648 [APIO2014]序列分割 斜率优化

    题解:斜率优化\(DP\) 提交:\(2\)次(特意没开\(long\ long\),然后就死了) 题解: 好的先把自己的式子推了出来: 朴素: 定义\(f[i][j]\)表示前\(i\)个数进行\( ...

  8. BZOJ 1010: 玩具装箱toy (斜率优化dp)

    Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...

  9. BZOJ 1010 [HNOI2008]玩具装箱 (斜率优化DP)

    题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=1010 思路 [斜率优化DP] 我们知道,有些DP方程可以转化成DP[i]=f[j]+x[i ...

随机推荐

  1. rsync---远程数据同步工具

    rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而 ...

  2. ubuntu18.04安装dash-to-dock出错的问题

    之前在安装dash-to-dock出现了这种错误: TypeError: ExtensionUtils.initTranslations is not a function Stack trace:i ...

  3. 编译impala、拓展impala语法解析模块

    以前也编译过,但是每次编译都忘记怎么做,然后都得重新找需要下载的文件. 编译文件:buildall.sh 如果想只编译前端可以这样运行: buildall.sh -fe_only 编译时会去S3下载一 ...

  4. 五大最受欢迎的BUG管理系统

    Google在中国大陆遭遇变故做出临时性的退出大陆市场,也使非常多忠实的用户受到小小的挫折,以本公司为例.原本的BUG都是记录在google的 EXCEL在线文档中,由于常常性的打不开.測试和开发组在 ...

  5. IOS-7-纪念一下刚刚接到的第一份offer(下面是面试遇到的问题)

    1.多线程技术 有四种开启线程的方式,基本的为:NSThread.NSOperation.GCD:还有一种已经老掉牙了.基于C语言.就不写了,基本不用. 样例:家在网络图片显示在手机界面上 第一步:代 ...

  6. Process Monitor —— 程序(文件和注册表)监控

    下载地址:Process Monitor v3.33 通过追踪 Process Monitor 的日志,我们可以确认某程序的行为:

  7. 18.angularJS服务

    转自:https://www.cnblogs.com/best/tag/Angular/ 服务 AngularJS功能最基本的组件之一是服务(Service).服务为你的应用提供基于任务的功能.服务可 ...

  8. 在使用Easy Sysprep 封装系统时要注意的地方

    安装好常用软件后要作的工作: 1.软件安装到D盘         QQ/   QQ管家 / Chrome  / 压缩软件 C盘      office2010   /   sogou  /foxit ...

  9. mysql安装遇到的坑

    安装mysql的三步: mysqld --initialize-insecure mysqld -install net start mysql 中间遇到了坑, 看这篇文章完美的解决了,记录一下 .以 ...

  10. 【福利】微信小程序130个精选Demo合集

    小编最近在开发小程序,也读到了不少优秀的小程序源码,项目中有些需求可以直接从源码里粘贴复制过来,虽然这样做不利于自己独立编写代码,但比较是给公司做项目啊,秉着效率第一的原则,简直没有什么比ctrl+c ...