链接

https://www.luogu.org/problemnew/show/P1880

思路

总之就是很牛逼的四边形不等式优化

复杂度\(O(n^2)\)

代码

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=207;
int read() {
int x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';
return x*f;
}
int n,a[N],sum[N],f[2][N][N],g[N][N];
inline int max(int a,int b) {return a>b?a:b;}
inline int min(int a,int b) {return a>b?b:a;}
int main() {
n=read();
for(int i=1;i<=n;++i) a[i+n]=a[i]=read();
for(int i=1;i<=n+n;++i) sum[i]=sum[i-1]+a[i];
memset(f[0],0x3f,sizeof(f[0]));
for(int i=1;i<=n+n;++i) f[0][i][i]=f[1][i][i]=0,g[i][i]=i;
for(int len=2;len<=n;++len) {
for(int i=1;i<=n+n;++i) {
int j=i+len-1;
if(j>n+n) continue;
f[1][i][j]=max(f[1][i][j-1],f[1][i+1][j])+sum[j]-sum[i-1];
for(int k=g[i][j-1];k<=g[i+1][j];++k) {
if(f[0][i][j]>f[0][i][k]+f[0][k+1][j]+sum[j]-sum[i-1]) {
f[0][i][j]=f[0][i][k]+f[0][k+1][j]+sum[j]-sum[i-1];
g[i][j]=k;
}
}
}
}
int ans[2]={0x3f3f3f3f,-0x3f3f3f3f};
for(int i=1;i<=n;++i) {
ans[0]=min(ans[0],f[0][i][i+n-1]);
ans[1]=max(ans[1],f[1][i][i+n-1]);
}
printf("%d\n%d\n",ans[0],ans[1]);
return 0;
}

[NOI1995]石子合并 四边形不等式优化的更多相关文章

  1. P1880 [NOI1995]石子合并[区间dp+四边形不等式优化]

    P1880 [NOI1995]石子合并 丢个地址就跑(关于四边形不等式复杂度是n方的证明) 嗯所以这题利用决策的单调性来减少k断点的枚举次数.具体看lyd书.这部分很生疏,但是我还是选择先不管了. # ...

  2. 区间DP石子合并问题 & 四边形不等式优化

    入门区间DP,第一个问题就是线性的规模小的石子合并问题 dp数组的含义是第i堆到第j堆进行合并的最优值 就是说dp[i][j]可以由dp[i][k]和dp[k+1][j]转移过来 状态转移方程 dp[ ...

  3. 四边形不等式优化DP——石子合并问题 学习笔记

    好方啊马上就要区域赛了连DP都不会QAQ 毛子青<动态规划算法的优化技巧>论文里面提到了一类问题:石子合并. n堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的 ...

  4. 【无聊放个模板系列】HDU 3506 (四边形不等式优化DP-经典石子合并问题[环形])

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  5. 51nod 1022 石子归并 V2 —— DP四边形不等式优化

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1022 1022 石子归并 V2  基准时间限制:1 秒 空间限 ...

  6. codevs3002石子归并3(四边形不等式优化dp)

    3002 石子归并 3 参考 http://it.dgzx.net/drkt/oszt/zltk/yxlw/dongtai3.htm  时间限制: 1 s  空间限制: 256000 KB  题目等级 ...

  7. Codevs 3002 石子归并 3(DP四边形不等式优化)

    3002 石子归并 3 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次 ...

  8. [51nod 1022] 石子归并v2 [dp+四边形不等式优化]

    题面: 传送门 思路: 加强版的石子归并,现在朴素的区间dp无法解决问题了 首先我们破环成链,复制一条一样的链并粘贴到原来的链后面,变成一个2n长度的序列,在它上面dp,效率O(8n^3) 显然是过不 ...

  9. 区间dp+四边形不等式优化

    区间dp+四边形优化 luogu:p2858 题意 给出一列数 \(v_i\),每天只能取两端的数,第 j 天取数价值为\(v_i \times j\),最大价值?? 转移方程 dp[i][j] :n ...

随机推荐

  1. scala mysql jdbc oper

    package egsql import java.util.Properties import com.sun.org.apache.xalan.internal.xsltc.compiler.ut ...

  2. vs2015 C#打包程序为exe

    说明:将自己写的C#源代码打包后生成exe,直接安装在别人的电脑上运行,就像我们在网上下载别人的软件一样,很高大上,vs2015提供了打包和生成exe功能: 步骤一.打开vs2015(其他版本应该也是 ...

  3. 斯坦福大学自然语言处理第四课“语言模型(Language Modeling)”

    http://52opencourse.com/111/斯坦福大学自然语言处理第四课-语言模型(language-modeling) 一.课程介绍 斯坦福大学于2012年3月在Coursera启动了在 ...

  4. sitecore系列教程之Sitecore个性化定制体验的内容策略

    这是利用Sitecore个性化引擎实现数字化转型的三部分系列文章的第一部分. 想象一下这种情况:您是一家B2C公司,拥有源源不断的客户群,支持您的直接面向消费者的产品.您最近推出了一项新服务,旨在为不 ...

  5. STL容器之map

    [1]map容器 map 是关联容器.容器中的每一个元素都是由一个键值和一个数据值组成的. set 是一个集合它以其元素作为键值(同一个键值只能出现一次),且默认以升序排列. list 是一个顺序容器 ...

  6. ESB(Enterprise Service Bus)企业服务总线介绍

    ESB(Enterprise Service Bus)企业服务总线介绍 ESB全称为Enterprise Service Bus,即企业服务总线.它是传统中间件技术与XML.Web服务等技术结合的产物 ...

  7. python之字符串函数

    1.  endswith()  startswith() # 以什么什么结尾 # 以什么什么开始 test = "alex" v = test.endswith('ex') v = ...

  8. Python进阶【第八篇】迭代器和生成器

    一.何谓迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration).迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代 ...

  9. Python进阶【第七篇】文件处理

    一.文件操作 在Python中,文件读写是最常见的操作.对文件的操作为: #1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='utf-8') #默 ...

  10. 四轴飞行器1.7 NRF24L01P无线通讯和改进型环形缓冲(转)

    源: 四轴飞行器1.7 NRF24L01P无线通讯和改进型环形缓冲