bzoj 3675: [Apio2014]序列分割
(一开始决策单调性证错了。。(蛋疼)(其实是没有单调性的,怎么都一样),可以自己写一写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]序列分割相关推荐
- 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割
Description 小H最近迷上了一个分割序列的游戏.在这个游戏里,小H需要将一个长度为N的非负整数序列分割成k+l个非空的子序列.为了得到k+l个子序列, 小H将重复进行七次以下的步骤: 1.小 ...
- BZOJ3675: [Apio2014]序列分割
BZOJ3675: [Apio2014]序列分割 Description 小H最近迷上了一个分隔序列的游戏. 在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列. 为了得到k ...
- BZOJ3675 [APIO2014]序列分割
Description 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列.为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首 ...
- 【洛谷3648】[APIO2014] 序列分割(斜率优化DP)
点此看题面 大致题意: 你可以对一个序列进行\(k\)次分割,每次得分为两个块元素和的乘积,求总得分的最大值. 区间\(DPor\)斜率优化\(DP\) 这题目第一眼看上去感觉很明显是区间\(DP\) ...
- [APIO2014] 序列分割(斜率优化dp)
problem luogu-P3648 你正在玩一个关于长度为 nnn 的非负整数序列的游戏.这个游戏中你需要把序列分成 k+1k+1k+1 个非空的块. 为了得到 k+1k+1k+1 块,你需要重复 ...
- 洛谷P3648 [APIO2014]序列分割(斜率优化)
传送门 没想到这种多个状态转移的还能用上斜率优化--学到了-- 首先我们可以发现,切的顺序对最终答案是没有影响的 比方说有一个序列$abc$,每一个字母都代表几个数字,那么先切$ab$再切$bc$,得 ...
- bzoj 2654 bzoj 3675 总结
bzoj 2654 && bzoj 3675 总结 手动博客搬家: 本文发表于20180929 15:18:55, 原地址https://blog.csdn.net/suncongbo ...
- [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)
[BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...
- bzoj 5092: [Lydsy1711月赛]分割序列
5092: [Lydsy1711月赛]分割序列 Time Limit: 5 Sec Memory Limit: 256 MB Submit: 219 Solved: 100 [Submit][St ...
最新文章
- 无人车、超级高铁、智慧城市......这是一份来自未来的出行报告
- Android向上显示更多内容,如何在Android中为2个父项实现向上导航,指向1个子活动...
- c语言计算机二级资料,2016年计算机二级C语言复习资料汇总
- 诈尸了。不瞒您说,老坑从不填,天天开新坑
- 《Python编程从入门到实践》第9章类动手试一试答案(附代码)
- Python学习之==装饰器
- [前缀和][dp] Jzoj P5873 小p的属性
- 服装业需要什么样的信息化?
- eclipse下的webservice开发
- hping3进行SYN Flood攻击
- 微信小程序中的网络请求
- mysql中的mysql数据库不见了
- 机器学习——马氏距离
- iOS源码资源之各种项目源码汇总
- 运营技巧|如何把产品运营好?
- CAD命令栏窗口跑到屏幕外面怎么找回来
- 如何剪切视频,只截取视频中间的一部分
- system data oracle,System.Data.OracleClient大全
- SaaS 前世今生:老树开新花
- Unity中一些小技巧
热门文章
- 新装Ubuntu系统,窗口过大,无法拖动,按钮都点不到怎么办?
- python求两数之和的命令_python实现读取命令行参数的方法
- Pow(x, n)Python解法
- php排序算法有哪些,PHP常见的几种排序算法
- golang语言变量定义、打印、占位符
- 计算机网络技术超文本,网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于()A、超文本传输协议B、传输控制协...
- php 检测数组内是否有空值,PHP判断数组是否为空的常用方法
- hive分隔符_HIVE-默认分隔符的(linux系统的特殊字符)查看,输入和修改
- 三菱plc编程实例3000_三菱入门PLC编程PLC系统程序包括哪些
- php nginx配置404页面,Nginx实现404页面的几种方法