LOJ P10147 石子合并 题解
Analysis
区间dp+前缀和
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 210 #define INF 2139062143 using namespace std; int n,minn=INF,maxx; int a[2*maxn],dp_min[2*maxn][2*maxn],dp_max[2*maxn][2*maxn],sum[2*maxn]; int main() {memset(dp_min,127,sizeof(dp_min));scanf("%d",&n);for(int i=1;i<=n;i++) {scanf("%d",&a[i]);a[i+n]=a[i];}sum[1]=a[1];for(int i=2;i<=2*n;i++) sum[i]=sum[i-1]+a[i];for(int i=1;i<=2*n;i++){dp_min[i][i]=0;dp_max[i][i]=0;} for(int len=2;len<=n;len++){for(int i=1;i<=2*n;i++){int j=i+len-1;if(j>2*n) break;for(int k=i;k<j;k++){dp_min[i][j]=min(dp_min[i][j],dp_min[i][k]+dp_min[k+1][j]+sum[j]-sum[i-1]);dp_max[i][j]=max(dp_max[i][j],dp_max[i][k]+dp_max[k+1][j]+sum[j]-sum[i-1]);}}}for(int i=1;i<=n;i++){minn=min(minn,dp_min[i][i+n-1]);maxx=max(maxx,dp_max[i][i+n-1]);}printf("%d\n%d",minn,maxx);return 0; } /* 4 4 5 9 4 */
请各位大佬斧正(反正我不认识斧正是什么意思)
转载于:https://www.cnblogs.com/handsome-zyc/p/11309196.html
LOJ P10147 石子合并 题解相关推荐
- AcWing.282石子合并(区间DP)题解
石子合并 题目描述 设有N堆石子排成一排,其编号为1,2,3,-,N. 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆. 每次只能合并相邻的两堆,合并的代价为这两堆石子的质 ...
- 單子の题解:直线石子合并
單子の题解:直线石子合并 题目描述 题目核心 代码实现 题目描述 古娜拉黑暗之神. 题目核心 状态表示:dp[i][j]表示从i到j的合并最小代价 列举每个小区间i,j的代价 左右两堆合成的最小代价= ...
- CSP 202203 题解:未初始化警告,出行计划,计算资源调度器,通信系统管理,博弈论与石子合并
试题内容请前往CCF官网查看: CCF-CSP计算机软件能力认证考试 http://118.190.20.162/home.page CCF 官方题解请点击这里. 阅读本题解前,您应当了解下列知识: ...
- CSP认证201612-4 压缩编码[C++题解]:区间dp、huffman树、石子合并
题目分析 来源:acwing 分析: 本题难在想到是区间dp.想到区间dp之后,这就是石子合并的代码直接默写. 那么是如何建模的呢?我们把huffman编码(这里要求按照字典序大小编码,和huffma ...
- 7-10 石子合并 (10 分)
一:前言: 关于石子合并,这个问题分为链型和环形两种,本题当中用的是环形,但我们在学习动态规划,所以多练肯定是有好处的,况且将链型的问题解决后,更容易理解环形的解决方法,所以本次题解分为两部分链型和环 ...
- AcWing 1068. 环形石子合并
AcWing 1068. 环形石子合并 题意: n堆石头围成一个圈,然后将相邻两堆合并成新的一堆,得分为新的一堆的石头数 问最高得分合最低得分 题解: 很简单,区间dp的模板题 和这个题一样 状态转移 ...
- 【动态规划】 石子合并问题(环形) (ssl 1597)
石子合并问题石子合并问题石子合并问题 Description 在一个圆形操场的四周摆放着n 堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该 ...
- 动态规划入门 合并石子 COGS1660 石子合并
1660. 石子合并(加强版) ★★ 输入文件:stone3.in 输出文件:stone3.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] 在一个圆形操场的四 ...
- 动态规划经典题之石子合并
题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分 试设计出1个算法,计算出将N堆石子合并成1堆 ...
- 区间DP之环形石子合并
环形石子合并 题目传送门 题目描述 将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆. 规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分. 请编写一个程序,读入堆 ...
最新文章
- .NET面向上下文、AOP架构模式(实现)
- Vue实现仿音乐播放器12-实现歌手页面效果
- PPT 下载 | 神策数据曹犟:数据驱动从方法到实践
- 欢迎来到我的第一个个人laravel尝试论坛项目,给予评价和建议 谢谢。
- 只要十步,你就可以应用表达式树来优化动态调用
- orcad自上而下_开发自上而下的Web服务项目
- [转]kafka介绍
- vue 使用了浏览器的刷新之后报错_Electron-vue运行之后出现了文件浏览器
- [ 逻辑锻炼] 用 JavaScript 做一个小游戏 ——2048 (详解版)
- 【分享】班组5S管理实践办法
- 领域驱动设计系列关键概念
- 如何免费使用内网穿透
- 工程测量(建筑物施工、监测)
- 普通路由器DMZ主机设置及访问方法
- UTS安装与卸载-Linux篇
- 炼石喜获“2020中国网络安全产业联盟突出贡献单位奖”
- moocpython程序设计答案_中国大学MOOC免费答案_Python程序设计答案第七章节答案
- Python有什么用?Python 的 10 个实际用途
- oracle聚簇因子对于索引使用的影响
- 首届.NET Core开源峰会 2018年5月20日