luogu P1880 石子合并
题目描述
在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。
试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.
输入输出格式
输入格式:
数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.
输出格式:
输出共2行,第1行为最小得分,第2行为最大得分.
输入输出样例
4
4 5 9 4
43
54
区间动态规划
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
inline int min(int x,int y)
{
if(x<y)return x;return y;
}
inline int max(int x,int y)
{
if(y>x)return y;return x;
}
int a[];
int dp_max[][];
int dp_min[][];
int main()
{
int n;
scanf("%d",&n);
memset(dp_max,,sizeof(dp_max));
for(int i=;i<=*n;i++)
for(int j=i+;j<=*n;j++)
dp_min[i][j]=0x7fffffff;
for(int i=;i<=n;i++)scanf("%d",a+i),a[i+n]=a[i];
for(int i=;i<=n*;i++)a[i]+=a[i-];
for(int i=n*-;i>=;i--)
{
for(int j=i+;j<=n*;j++)
{
for(int k=i;k<j;k++)
{
dp_min[i][j]=min(dp_min[i][j],dp_min[i][k]+dp_min[k+][j]+a[j]-a[i-]);
dp_max[i][j]=max(dp_max[i][j],dp_max[i][k]+dp_max[k+][j]+a[j]-a[i-]);
}
}
}
int minn=0x7fffffff;
int maxx=-;
for(int i=;i<=n;++i)
{
minn=min(dp_min[i][i+n-],minn);
maxx=max(dp_max[i][i+n-],maxx);
}
printf("%d\n%d",minn,maxx);
return ;
}
luogu P1880 石子合并的更多相关文章
- P1880 石子合并
		
P1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计 ...
 - 【洛谷】P1880 石子合并
		
P1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计 ...
 - 经典DP 洛谷p1880 石子合并
		
https://www.luogu.org/problemnew/show/P1880 题目 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新 ...
 - [luogu 1880]石子合并
		
题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
 - 洛谷P1880 石子合并(环形石子合并 区间DP)
		
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
 - 洛谷P1880 石子合并(区间DP)(环形DP)
		
To 洛谷.1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1 ...
 - luogu P1880石子归并
		
石子归并 luogu1880 传送门 noi1995 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得 ...
 - 洛谷 P1880 石子合并
		
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
 - 【luogu】 P1880 石子合并
		
原题原题原题原题原题 先贴上错误代码... ↓错误代码↓ #include <iostream> #include <cstdio> #include <cstring& ...
 
随机推荐
- Python接口测试之封装requests
			
首先安装requests库: pip install requests test_requests.py 首先在TestRequest类中封装get与post方法, import requests i ...
 - loj2051 「HNOI2016」序列
			
ref #include <algorithm> #include <iostream> #include <cstdio> #include <cmath& ...
 - bash shell命令与监测的那点事(三)
			
bash shell命令与监测的那点事之df与du 前两篇介绍了bash shell的进程监控指令,但是有时候你需要知道在某个设备上还有多少磁盘空间.首先介绍df命令: df命令 df命令就是用来轻松 ...
 - python - web自动化测试 - 元素操作 - 等待
			
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: wait.py @ide: PyCharm Community Edi ...
 - sqlserver 获取一个月有多少天
			
--思路:给定日期的下一个月的1号减去1天,然后取datepart(DAY,dt) declare @dt varchar(10)select @dt='2013-11-20'select datep ...
 - ssh-add Could not open a connection to your authentication agent.
			
ssh-add 报错Could not open a connection to your authentication agent. 需要执行以下代码 eval `ssh-agent -s` ssh ...
 - 手机安装app总是显示未安装
			
手机安装软件总是显示未安装 查看是否开启了护眼模式或者护眼工具等干扰屏幕的软件.关掉,再安装即可
 - 0-Android系统各层中LOG的使用
			
Android系统各层中LOG的使用 , ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ ANDROID_LOG_VERBOSE, ANDR ...
 - 寻找web根目录
			
有时候,在利用一些命令执行漏洞时,可以以较高权限执行一些操作,但在我们想要上传shell的时候,却找不到网站根目录,下面是一些日常使用的寻找网站根目录的方法,记录下: 1.jsp 查看当前路径,在这个 ...
 - manifest
			
manifest是一种软件,属于AndroidManifest.xml文件,在简单的Android系统的应用中提出了重要的信息,它可以运行任何应用程序的代码. 每个安卓应用程序必须有一个Android ...