石子归并的三种打开方式——难度递增———51Node
第1行:N(2 <= N <= 100)
第2 - N + 1:N堆石子的数量(1 <= A[i] <= 10000)
输出最小合并代价
4
1
2
3
4
19
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
const int maxx=;
const int INF=0x3f3f3f3f;
int n,num[maxx],dp[maxx][maxx],sum[maxx][maxx];
int main(){
while(~scanf("%d",&n)){
for(int i=;i<=n;i++){
scanf("%d",&num[i]);
}
memset(sum,,sizeof(sum));
for(int i=;i<=n;i++){
for(int j=i;j<=n;j++){
sum[i][j]=sum[i][j-]+num[j];
}
}
memset(dp,INF,sizeof(dp));
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(i>=j){
dp[i][j]=;
}
}
}
for(int i=;i<=n;i++){
for(int j=i-;j>=;j--){
for(int k=j;k<i;k++){
dp[j][i]=min(dp[j][i],dp[j][k]+dp[k+][i]+sum[j][i]);
}
}
}
printf("%d\n",dp[][n]);
}
return ;
}
第1行:N(2 <= N <= 1000)
第2 - N + 1:N堆石子的数量(1 <= A[i] <= 10000)
输出最小合并代价
4
1
2
3
4
19
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<string.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<cmath> using namespace std;
const int N=;
int n,f[N][N]={},a[N][N]={};
int s[N][N];
int main(){
memset(f,,sizeof(f));
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%d",&a[i][i]);
a[n+i][n+i]=a[i][i];
}
for(int i=;i<n*;i++){
s[i][i]=i;
f[i][i]=;
}
for(int i=;i<n*-;i++){
for(int j=i+;j<n*-;j++){
a[i][j]=a[i][j-]+a[j][j];
}
}
for(int l=;l<n;l++){
for(int i=;i+l<n*-;i++){
int j=i+l;
for(int k=s[i][j-];k<=s[i+][j];k++){
if(f[i][j] > a[i][j]+f[i][k]+f[k+][j])
{
f[i][j] = a[i][j]+f[i][k]+f[k+][j];
s[i][j] = k;
}
}
}
}
int ans=f[][n-];
for(int i=;i<n;i++){
if(ans>f[i][i+n-]){
ans=f[i][i+n-];
}
}
printf("%d\n",ans);
return ; }
第1行:N(2 <= N <= 50000)
第2 - N + 1:N堆石子的数量(1 <= A[i] <= 10000)
输出最小合并代价
4
1
2
3
4
19
#include <iostream>
#include <string.h>
#include <stdio.h> using namespace std;
const int N = ; int stone[N];
long long n,t,ans; void combine(int k)
{
int tmp = stone[k] + stone[k-];
ans += tmp;
for(int i=k;i<t-;i++)
stone[i] = stone[i+];
t--;
int j = ;
for(j=k-;j> && stone[j-] < tmp;j--)
stone[j] = stone[j-];
stone[j] = tmp;
while(j >= && stone[j] >= stone[j-])
{
int d = t - j;
combine(j-);
j = t - d;
}
} int main()
{
while(scanf("%lld",&n)!=EOF)
{
if(n == ) break;
for(int i=;i<n;i++)
scanf("%d",stone+i);
t = ;
ans = ;
for(int i=;i<n;i++)
{
stone[t++] = stone[i];
while(t >= && stone[t-] <= stone[t-])
combine(t-);
}
while(t > ) combine(t-);
printf("%lld\n",ans);
}
return ;
}
石子归并的三种打开方式——难度递增———51Node的更多相关文章
- 文件的三种打开方式及with管理文件上下文
文件的三种打开方式及with管理文件上下文 一.文件的三种打开方式 1.1 只读 f = open(r'D:\pycharm\yjy\上海python学习\456.txt','r',encoding= ...
- linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用
---操作环境--- 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 物理机系统版本:win10 一.虚拟网络三种连接方式 当在V ...
- IIS下PHP的三种配置方式比较
在Windows IIS 6.0下配置PHP,通常有CGI.ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异. 1. ...
- MyEclipse中web服务器的三种配置方式
初学Javaweb开发的人们都会遇到一个问题,就是服务器环境的搭建配置问题.下面介绍三种服务器的搭建方式. 直接修改server.xml文件 当你写了一个web应用程序(jsp/servlet),想通 ...
- Linq to Sql : 三种事务处理方式
原文:Linq to Sql : 三种事务处理方式 Linq to SQL支持三种事务处理模型:显式本地事务.显式可分发事务.隐式事务.(from MSDN: 事务 (LINQ to SQL)).M ...
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 异常汇总:http://www ...
- python-web自动化-三种等待方式
当有元素定位不到时,比如下拉框,弹出框等各种定位不到时:一般是两种问题:1 .有frame :2.没有加等待 下面学习三种等待方式: 1.强制等待 sleep(xx)这种方法简单粗暴,不管浏览器是否加 ...
- Linux基石【第二篇】虚拟网络三种连接方式(转载)
在虚拟机上安装完Centos系统后,开始配置静态IP,以方便在本宿主机上可以访问虚拟机,在曲折的配置中,了解到虚拟机还有三种连接方式:Bridged,NAT和Host-only,于是,我又一轮新的各种 ...
- Entity Framework 5.0系列之EF概览-三种编程方式
概述 在开发面向数据的软件时我们常常为了解决业务问题实体.关系和逻辑构建模型而费尽心机,ORM的产生为我们提供了一种优雅的解决方案.ADO.NET Entity Framework是.NET开发中一种 ...
随机推荐
- mysql 1055 的错误
1.Err1055,出现这个问题往往是在执行sql语句时候,在最后一行会出现这个问题. [Err] 1055 - Expression #1 of ORDER BY clause is not in ...
- 在网页标题上加个logo
只需在title标签上加个link标签即可 <link rel="icon" href="images/icon.png" > <title& ...
- 你们知道SEO每天都在做什么吗?
医院也有做SEO的,专门负责医院网站优化工作,那么医院的SEO每天都做什么呢?偶然见到一篇文章,转载来分享给大家.感觉写的很实在. 大凡做seo工作的人都知道seo工作者每天都要做大量的外链,像有些个 ...
- php-语言参考-基本语法3.1
一,PHP代码的开始和结束标记 1,<?php 和 ?> //重点 2,<script language="php"> 和 </script> ...
- C# 打开帮助文档,打开电脑中其他应用或者文件
打开帮助文档 System.Diagnostics.Process.Start(Directory.GetCurrentDirectory() + "\\" + "hel ...
- C++机试笔记
- [Bzoj2282]消防(二分答案+树的直径)
Description 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超越宇宙的热情,所以这个国家 ...
- IDA 对 so 的动态调试
将IDAPro根目录下dbgsrv 目录下的android_server(模拟器用android_x86_server,这里还是用真机好点)文件push 到安卓设备(比如/data/local/tmp ...
- Numpy数据存取与函数
数据的CSV文件存取 多维数据的存取 NumPy的随机数函数 NumPy的统计函数 NumPy的梯度函数
- Flume使用(案例分析)
Flume官方文档 Usage: bin/flume-ng <command> [options]... commands: help display this help text age ...