洛谷 P1880 [NOI1995]石子合并(区间DP)
嗯...
题目链接:https://www.luogu.org/problem/P1880
这道题特点在于石子是一个环,所以让a[i+n] = a[i](两倍长度)即可解决环的问题,然后注意求区间最小值的时候dp要初始化为一个很大的数...
AC代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring> using namespace std; int dp1[][], dp2[][], sum[], a[]; int main(){
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++) {scanf("%d", &a[i]); a[i + n] = a[i];}
for(int i = ; i <= n * ; i++) {sum[i] = sum[i - ] + a[i];}
for(int l = ; l <= n; l++){
for(int i = ; i <= * n; i++){
int j = i + l;
dp2[i][j] = 0x3f3f3f;// 求最小值初始化为很大
if(j > * n) break;
for(int k = i; k < j; k++){
dp1[i][j] = max(dp1[i][j], dp1[i][k] + dp1[k + ][j] + sum[j] - sum[i - ]);
dp2[i][j] = min(dp2[i][j], dp2[i][k] + dp2[k + ][j] + sum[j] - sum[i - ]);
}
}
}
int maxx = , minn = 0x3f3f;
for(int i = ; i <= n; i++){
int j = i + n - ;
maxx = max(maxx, dp1[i][j]);
minn = min(minn, dp2[i][j]);
}
printf("%d\n%d\n", minn, maxx);
return ;
}
AC代码
洛谷 P1880 [NOI1995]石子合并(区间DP)的更多相关文章
- 洛谷 P1880 [NOI1995] 石子合并(区间DP)
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是石子合并问题稍微升级版 这道题和经典石子合并问题的不同在于,经典的石子合 ...
- 洛谷 P1880 [NOI1995]石子合并 题解
P1880 [NOI1995]石子合并 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试 ...
- P1880 [NOI1995]石子合并[区间dp+四边形不等式优化]
P1880 [NOI1995]石子合并 丢个地址就跑(关于四边形不等式复杂度是n方的证明) 嗯所以这题利用决策的单调性来减少k断点的枚举次数.具体看lyd书.这部分很生疏,但是我还是选择先不管了. # ...
- P1880 [NOI1995]石子合并 区间dp
P1880 [NOI1995]石子合并 #include <bits/stdc++.h> using namespace std; ; const int inf = 0x3f3f3f3f ...
- 洛谷P1880 [NOI1995]石子合并 纪中21日c组T4 2119. 【2016-12-30普及组模拟】环状石子归并
洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石 ...
- 洛谷P1880 [NOI1995] 石子合并 [DP,前缀和]
题目传送门 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆 ...
- [洛谷P1880][NOI1995]石子合并
区间DP模板题 区间DP模板Code: ;len<=n;len++) { ;i<=*n-;i++) //区间左端点 { ; //区间右端点 for(int k=i;k<j;k++) ...
- HDU4632 Poj2955 括号匹配 整数划分 P1880 [NOI1995]石子合并 区间DP总结
题意:给定一个字符串 输出回文子序列的个数 一个字符也算一个回文 很明显的区间dp 就是要往区间小的压缩! #include<bits/stdc++.h> using namesp ...
- 洛谷 P1880 [NOI1995]石子合并
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
- P1880 [NOI1995]石子合并 区间dp+拆环成链
思路 :一道经典的区间dp 唯一不同的时候 终点和起点相连 所以要拆环成链 只需要把1-n的数组在n+1-2*n复制一遍就行了 #include<bits/stdc++.h> usi ...
随机推荐
- Linux异常 时间戳 2018-10-08 11:17:22 是未来的 5288025.776562967 秒之后
原因:系统时间不对,有可能落后当前实际时间
- 番外:如何克隆可刷新的PDB(Refreshable PDB)
基于版本:19c (12.2.0.3) AskScuti 创建方法:克隆创建 对应路径:属于克隆.PDB类型为:Refreshable 相关系列请参考<Oracle创建PDB列表文章> 注 ...
- FLV格式解析(转)
flv格式详解+实例剖析:https://www.cnblogs.com/lidabo/p/9018548.html FLV 封装格式解析:https://www.cnblogs.com/leisur ...
- IntelliJ IDEA 2017.3尚硅谷-----模板
https://www.jetbrains.com/help/idea/using-live-templates.html
- 安装Oracle进行先决条件检查时显示 Environment variable:"PATH" 失败”
问题已解决:安装时exe可执行文件的目录也不能有中文,安装时注意目录一定要按oracle的格式.运行安装程序时,要用右键--> 要以管理员方式启动. 原文: 用到oracle数据库,由于电脑装的 ...
- Python六剑客
1.切片 切片:截取可迭代对象的部分内容(list,tuple,dict,set,str) 2.列表解析式 列表解析式可以快速的生成一个列表 不带if条件的: 格式:[expression for i ...
- css3之渐变背景色(linear-gradient)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- IntelliJ IDEA 2017.3尚硅谷-----查看项目配置
- Java入门学习路线目录索引
原创 Java入门学习路线目录索引 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/One_ ...
- AcWing 850. Dijkstra求最短路 II 堆优化版 优先队列 稀疏图
//稀疏图 点和边差不多 #include <cstring> #include <iostream> #include <algorithm> #include ...