(一开始决策单调性证错了。。(蛋疼)(其实是没有单调性的,怎么都一样),可以自己写一写i<j,先分i后分j,和先分j后分i是一样的)

(而且犇蒟蒻发现斜率优化随便推上一个式子就可以了,(感觉比DP简单多了(雾)))

 1 #include<cstdio>
 2 #include<iostream>
 3 #define LL long long
 4 #define lowbit(x) x&(-x)
 5 #define inf 0x3f3f3f3f
 6 #define eps 1e-5
 7 #define N 100005
 8 using namespace std;
 9 inline int ra()
10 {
11     int x=0,f=1; char ch=getchar();
12     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
13     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
14     return x*f;
15 }
16 LL f[N][2],sum[N],ans,a[N];
17 int q[N],n,K,top,pp,qq;
18 double slope(int b, int a)
19 {
20     return (double)(sum[b]*sum[b]-f[b][pp]+f[a][pp]-sum[a]*sum[a])/(double)(sum[b]-sum[a]);
21 }
22 int main(int argc, char const *argv[])
23 {
24     n=ra(); K=ra();
25     for (int i=1; i<=n; i++) a[i]=ra();
26     for (int i=1; i<=n; i++) if (a[i]!=0) sum[++top]=sum[top-1]+a[i];
27     n=top; pp=1,qq=0;
28     for (int k=1; k<=K; k++)
29     {
30         int L=1,R=0;
31         for (int i=k; i<=n; i++)
32         {
33             while (L<R && slope(i-1,q[R])<slope(q[R],q[R-1])) R--;
34             q[++R]=i-1;
35             while (L<R && slope(q[L+1],q[L])<sum[i]) L++;
36             int t=q[L];
37             f[i][qq]=f[t][pp]+(sum[i]-sum[t])*sum[t];
38         }
39         pp^=1,qq^=1;
40     }
41     cout<<f[n][pp];
42     return 0;
43 }

转载于:https://www.cnblogs.com/ccd2333/p/6544984.html

bzoj 3675: [Apio2014]序列分割相关推荐

  1. 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割

    Description 小H最近迷上了一个分割序列的游戏.在这个游戏里,小H需要将一个长度为N的非负整数序列分割成k+l个非空的子序列.为了得到k+l个子序列, 小H将重复进行七次以下的步骤: 1.小 ...

  2. BZOJ3675: [Apio2014]序列分割

    BZOJ3675: [Apio2014]序列分割 Description 小H最近迷上了一个分隔序列的游戏. 在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列. 为了得到k ...

  3. BZOJ3675 [APIO2014]序列分割

    Description 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列.为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首 ...

  4. 【洛谷3648】[APIO2014] 序列分割(斜率优化DP)

    点此看题面 大致题意: 你可以对一个序列进行\(k\)次分割,每次得分为两个块元素和的乘积,求总得分的最大值. 区间\(DPor\)斜率优化\(DP\) 这题目第一眼看上去感觉很明显是区间\(DP\) ...

  5. [APIO2014] 序列分割(斜率优化dp)

    problem luogu-P3648 你正在玩一个关于长度为 nnn 的非负整数序列的游戏.这个游戏中你需要把序列分成 k+1k+1k+1 个非空的块. 为了得到 k+1k+1k+1 块,你需要重复 ...

  6. 洛谷P3648 [APIO2014]序列分割(斜率优化)

    传送门 没想到这种多个状态转移的还能用上斜率优化--学到了-- 首先我们可以发现,切的顺序对最终答案是没有影响的 比方说有一个序列$abc$,每一个字母都代表几个数字,那么先切$ab$再切$bc$,得 ...

  7. bzoj 2654 bzoj 3675 总结

    bzoj 2654 && bzoj 3675 总结 手动博客搬家: 本文发表于20180929 15:18:55, 原地址https://blog.csdn.net/suncongbo ...

  8. [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)

    [BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...

  9. bzoj 5092: [Lydsy1711月赛]分割序列

    5092: [Lydsy1711月赛]分割序列 Time Limit: 5 Sec  Memory Limit: 256 MB Submit: 219  Solved: 100 [Submit][St ...

最新文章

  1. 无人车、超级高铁、智慧城市......这是一份来自未来的出行报告
  2. Android向上显示更多内容,如何在Android中为2个父项实现向上导航,指向1个子活动...
  3. c语言计算机二级资料,2016年计算机二级C语言复习资料汇总
  4. 诈尸了。不瞒您说,老坑从不填,天天开新坑
  5. 《Python编程从入门到实践》第9章类动手试一试答案(附代码)
  6. Python学习之==装饰器
  7. [前缀和][dp] Jzoj P5873 小p的属性
  8. 服装业需要什么样的信息化?
  9. eclipse下的webservice开发
  10. hping3进行SYN Flood攻击
  11. 微信小程序中的网络请求
  12. mysql中的mysql数据库不见了
  13. 机器学习——马氏距离
  14. iOS源码资源之各种项目源码汇总
  15. 运营技巧|如何把产品运营好?
  16. CAD命令栏窗口跑到屏幕外面怎么找回来
  17. 如何剪切视频,只截取视频中间的一部分
  18. system data oracle,System.Data.OracleClient大全
  19. SaaS 前世今生:老树开新花
  20. Unity中一些小技巧

热门文章

  1. 新装Ubuntu系统,窗口过大,无法拖动,按钮都点不到怎么办?
  2. python求两数之和的命令_python实现读取命令行参数的方法
  3. Pow(x, n)Python解法
  4. php排序算法有哪些,PHP常见的几种排序算法
  5. golang语言变量定义、打印、占位符
  6. 计算机网络技术超文本,网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于()A、超文本传输协议B、传输控制协...
  7. php 检测数组内是否有空值,PHP判断数组是否为空的常用方法
  8. hive分隔符_HIVE-默认分隔符的(linux系统的特殊字符)查看,输入和修改
  9. 三菱plc编程实例3000_三菱入门PLC编程PLC系统程序包括哪些
  10. php nginx配置404页面,Nginx实现404页面的几种方法