NOI1995石子合并&多种石子合并
题目描述
在一个圆形操场的四周摆放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<cmath>
#include<algorithm>
using namespace std;
int i,j,l,k,n,a[],f[][],s[];
int main()
{
scanf("%d",&n);
s[] = ;
for(i = ;i <= n;i++)
{
scanf("%d",&a[i]);
s[i] = s[i - ] + a[i];
}
for(l = ;l <= n;l++)
{
for(i = ;i <= n + l - ;i++)
{
j = i + l - ;
for(k = i;k <= j - ;k++)
{
if(f[i][j] != )
f[i][j] = min(f[i][j],f[i][k] + f[k + ][j] + s[j] - s[i - ]);
else
f[i][j] = f[i][k] + f[k + ][j] + s[j] - s[i - ];
}
}
}
printf("%d",f[][n]);
return ;
}
第二种是围成一个圈那样,和这道题就是这个类型
O(N^3)有两种算法
第一种就是


这种啊博主也没怎么看懂,等着2020年6月9号看吧吼吼
下面这种博主还是会滴
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int i,j,m,n,l,k,da = ,an = ,a[],f[][],s[],p[][];
int main()
{
scanf("%d",&n);
s[] = ;
for(i = ;i <= n;i++)
{
scanf("%d",&a[i]);
a[i + n] = a[i];
}
for(i = ;i <= * n;i++)
{
s[i] = s[i - ] + a[i];
}
for(l = ;l <= n;l++)
{
for(i = ;i <= n * - l;i++)
{
j = i + l - ;
for(k = i;k <= j - ;k++)
{
if(f[i][j] != )
f[i][j] = min(f[i][j],f[i][k] + f[k + ][j] + s[j] - s[i - ]);
else
f[i][j] = f[i][k] + f[k + ][j] + s[j] - s[i - ];
p[i][j] = max(p[i][j],p[i][k] + p[k + ][j] + s[j] - s[i - ]);
}
}
}
for(i = ;i <= n;i++)
{
if(da != )
da = min(da,f[i][i + n - ]);
else
da = f[i][i + n - ];
an = max(an,p[i][i + n - ]);
}
printf("%d\n%d",da,an);
return ;
}
NOI1995石子合并&多种石子合并的更多相关文章
- ios framework 分离与合并多种CPU架构,分离与合并模拟器与真机
ios framework 分离与合并多种CPU架构,分离与合并模拟器与真机 如果你所用的framework支持真机和模拟器多种CPU架构,而你需要的是其中的一种或几种,那么可以可以从framewo ...
- C# 创建邮件合并模板并合并文本、图片
对于Word中的邮件合并功能,用户可以将邮件合并后的结果文档保存并打印,也可以通过邮件的形式发送,在很多场合需要使用到此功能.那对于编程人员,我们也可以在C#语言环境中通过代码的形式来实现.根据需要先 ...
- 启发式合并 splay合并 线段树合并基础
Gold is everywhen! - somebody 启发式合并 将小的集合一个个插入到大的集合. 每次新集合大小至少比小集合大一倍,因此每个元素最多合并\(\log n\)次,总复杂度为\(n ...
- Unity网格合并_材质合并
[转]Unity网格合并_材质合并 原帖请戳:Unity网格合并_材质合并 写在前面: 从优化角度,Mesh需要合并. 从换装的角度(这里指的是换形状.换组成部件的换装,而不是挂点型的换装),都需要网 ...
- 【转】Unity网格合并_材质合并
原帖请戳:Unity网格合并_材质合并 写在前面: 从优化角度,Mesh需要合并. 从换装的角度(这里指的是换形状.换组成部件的换装,而不是挂点型的换装),都需要网格合并.材质合并.如果是人物的换装, ...
- jquery数组的合并 对象的合并
直接转自:https://www.cnblogs.com/ooo0/p/7737678.html 1.数组的合并 1.1 concat方法 var a=[1,2,3],b=[4,5,6]; var c ...
- Java 在Word中创建邮件合并模板并合并文本和图片
Word里面的邮件合并功能是一种可以快速批量操作同类型数据的方式,常见的如数据填充.打印等.其中必不可少的步骤包括用于填充的模板文档.填充的数据源以及实现邮件合并的功能.下面,通过Java程序展示如何 ...
- C# 合并多种格式文件为PDF
文档合并是一种高效文档处理方式.如果能够有一个方法能将多种不同类型的文档合并成一种文档格式,那么在文档存储管理上将为我们提供极大的便利.因此,本篇文章介绍了一种如何使用免费组件Free Spire.O ...
- 分享知识-快乐自己:List 集合去重合并 , 多种方法演示
最近空闲时间去面试 , 被问了一个问题list如何去重合并 , 想了半天只想到了最繁琐的循环方法 , 顿觉丢人. 整理一下资料供大家参考: List<String> a = new Arr ...
随机推荐
- 【OJ】字符串去重并并按原顺序打印出重复字符
ACM上一道简单的字符串题,从网上找了下类似的代码进行参考外加之个人思考,想到此好思路. 题目大意 任意输入一行字符串,检索重复出现的字符.将原字符串中的重复字符删除后按照原顺序输出,同时按照原顺序输 ...
- Android CPU耗电量测试
Android CPU耗电量测试 在测试Android app时,不仅仅要关注app的功能,也好关注app的性能指标,cpu.内存.流量.电量等.简单介绍下电量测试中的cpu耗电. 影响耗电的因素 C ...
- python接口测试模版
"""Test case implementation""" import sys import functools import diff ...
- PHP中cookie思维导图
- ssh连接服务器
1.命令行操作 第一步输入 :ssh 用户名@服务器外网ip 第二步:输入密码,回车 看到welcome提示信息即为登陆成功 输入:exit 退出 2.客户端操作 windows下载ssh软件,安装 ...
- rtrim
<?php $str = '14岁'; $new_str = rtrim($str, '岁'); echo $new_str; 如果右边是'岁',就过滤掉.
- ubuntu vscode chrome 显示color emoji
win10 下vscode默认就可以显示color emoji, 真是亲儿子啊. 但linux下默认是显示黑白的. 绕了一些弯路之后,发现最简单的办法是: 1 下载google noto字体全集 ...
- Codeforces 1025 D - Recovering BST
D - Recovering BST 思路:区间dp dp[l][r][0]表示l到r之间的数字可以构成一个二叉搜索树,并且以r+1为根节点 dp[l][r][0]表示l到r之间的数字可以构成一个二叉 ...
- jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第三话):创建一个自由风格的项目(非maven),实现自动打war包
上一节把git和ant安装在虚拟机,并在jenkins上做了相关配置,接下来就可以真正开始构建一个项目了 1.新建一个自由风格的项目,因为是用ant打包,所以不要选择构建maven项目 2.配置源码管 ...
- 雷林鹏分享:C# 结构(Struct)
C# 结构(Struct) 在 C# 中,结构是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构. 结构是用来代表一个记录.假设您想跟踪图书馆中书的动 ...