codevs——T2102 石子归并 2
2024-08-31 09:17:04
题目描述 Description
在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。
试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.
输入描述 Input Description
数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.
输出描述 Output Description
输出共2行,第1行为最小得分,第2行为最大得分.
样例输入 Sample Input
4
4 4 5 9
样例输出 Sample Output
43
54
数据范围及提示 Data Size & Hint
经典的区间动态规划。
#include <algorithm>
#include <cstdio>
#define N 1015 using namespace std; bool if_;
char ch;
int n,num[N];
int maxn,minn=1e7;
int f_max[N][N],f_min[N][N]; void read(int &x)
{
if_=;x=;
ch=getchar();
while(ch<''||ch>'')
{
if(ch=='-') if_=;
ch=getchar();
}
while(ch>=''&&ch<='')
{
x=x*+ch-'';
ch=getchar();
}
if(if_) x=(~x)+;
} int main()
{
read(n);
for(int i=;i<=n;i++)
read(num[i]),num[i+n]=num[i],num[i]+=num[i-];
for(int i=n+;i<=n*;i++) num[i]+=num[i-];
for(int i=;i<=n;i++)
f_min[i][i]=f_max[i][i]=;
for(int len=;len<=n;len++)
for(int i=*n-len;i>=;i--)
{
int j=len+i-;
f_min[i][j]=1e7;
f_max[i][j]=;
for(int k=i;k<j;k++)
{
f_min[i][j]=min(f_min[i][j],f_min[i][k]+f_min[k+][j]+num[j]-num[i-]);
f_max[i][j]=max(f_max[i][j],f_max[i][k]+f_max[k+][j]+num[j]-num[i-]);
}
}
for(int i=;i<=n;i++)
{
if(f_min[i][i+n-]<minn) minn=f_min[i][i+n-];
if(f_max[i][i+n-]>maxn) maxn=f_max[i][i+n-];
}
printf("%d\n%d",minn,maxn);
return ;
}
最新文章
- 学习ASP.NET MVC(八)——“Code First Migrations ”工具
- Javascript 学习之路:鼠标长按事件
- sublime删除安装的插件
- Hibernate——主键配置
- Android sqlite数据库存取图片信息
- phonegap apk
- TableLayout中怎么填充相同的布局
- 2016 Technology
- 现代3D图形编程学习--opengl使用不同的缓存对象(译者添加)
- Discuz 7.2 faq.php漏洞分析
- [2014-08-24]为 Xamarin Studio 创建的 Asp.Net Mvc 项目配置 gitignore
- [收藏] Java源码阅读的真实体会
- Linux下的有用命令
- 洗礼灵魂,修炼python(69)--爬虫篇—番外篇之feedparser模块
- shell编程学习笔记(三):Shell中局部变量的使用
- React 学习之路 (一)
- 【ES】代码例子
- CHARACTER SET
- Hadoop学习笔记之三:DataNode
- 选择排序法、冒泡排序法、插入排序法、系统提供的底层sort方法排序之毫秒级比较
热门文章
- Myeclipse快捷键备忘
- EOJ 3031 二进制倒置
- 南海区行政审批管理系统接口规范v0.3(规划) 5.投资项目联合审批系统API 5.1.【uploadFile】证件文书附件上传
- 计算机网络自顶向下方法第2章-应用层(application-layer).2
- BZOJ 4771 主席树+倍增+set
- mysql 1862 密码过期
- C# WinForm的练习
- WebService 服务接口
- 文件被占用导致Hive Load文件不成功
- 使用光盘作为yum源安装ifconfig等网络命令