t题目链接:https://vjudge.net/problem/HRBUST-1818

思路:一段已经合并的区间,分成两段区间,遍历所有能分开的区间。

代码有注释,基本就这样一个简单是思路。


 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <cmath>
#include <iomanip>
using namespace std; typedef long long LL;
#define inf (1LL << 25)
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define rep__(i,j,k) for(int i = (j); i < (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--)
#define per__(i,j,k) for(int i = (j); i > (k); i--) const int N = ;
int sum[N];
int dpma[N][N];
int dpmi[N][N]; int main(){ ios::sync_with_stdio(false);
cin.tie(); int n;
while(cin >> n){ rep(i,,n) rep(j,,n){
dpma[i][j] = ;
dpmi[i][j] = inf;
} int in;
rep(i,,n){
cin >> in;
sum[i] = sum[i - ] + in;
} rep(i,,n){
dpmi[i][i] = ; //我这里直接从长度为2开始合并,然后遍历分区间
} rep(l,,n){ //合并的区间长度
rep(i,,n - l + ){ //开始位置
int e = i + l - ; //结束为止
rep(o,i,e - ){ //分段位置
int v = sum[e] - sum[i - ];
dpma[i][e] = max(dpma[i][e], dpma[i][o] + dpma[o + ][e] + v);
dpmi[i][e] = min(dpmi[i][e], dpmi[i][o] + dpmi[o + ][e] + v);
}
}
} cout << dpmi[][n] << ' ' << dpma[][n] << endl;
} getchar();getchar(); return ;
}

石子合并问题--直线版 HRBUST - 1818的更多相关文章

  1. HRBUST 1818 石子合并问题--直线版

    石子合并问题--直线版 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HRBUST. Original ...

  2. 石子合并(直线版+环形版)&(朴素写法+四边形优化+GarsiaWachs算法)

    石子合并-直线版 (点击此处查看题目) 朴素写法 最简单常见的写法就是通过枚举分割点,求出每个区间合并的最小花费,从而得到整个区间的最小花费,时间复杂度为O(n^3),核心代码如下: ; i < ...

  3. brbustoj 1818 石子合并问题--直线版

    比较经典且基础的区间dp,转移方程为 dp_max[i][j] = max(dp_max[i][j],dp_max[i][k] + dp_max[k+1][j] + sum[j]-sum[i-1]); ...

  4. HRBUST 1819 石子合并问题--圆形版

    石子合并问题--圆形版 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HRBUST. Original ...

  5. HRBUST - 1819 石子合并问题--圆形版(区间dp+环形+四边形优化)

    石子合并问题--圆形版 在圆形操场上摆放着一行共n堆的石子.现要将石子有序地合并成一堆.规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆石子数记为该次合并的得分.请编辑计算出将n堆石子合并成一堆的 ...

  6. 洛谷 P5569 [SDOI2008]石子合并 GarsiaWachs算法

    石子合并终极通用版 #include<bits/stdc++.h> using namespace std ; ]; int n,t,ans; void combine(int k) { ...

  7. 直线石子合并(区间DP)

    石子合并 时间限制:1000 ms  |  内存限制:65535 KB 描述有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费 ...

  8. 石子合并(NOI1995)

    石子合并(NOI1995) 时间限制: 1 Sec  内存限制: 128 MB提交: 90  解决: 48[提交][状态][讨论版] 题目描述 在操场上沿一直线排列着 n堆石子.现要将石子有次序地合并 ...

  9. HDU 3506 (环形石子合并)区间dp+四边形优化

    Monkey Party Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Tot ...

随机推荐

  1. C# 动态加载(转)

    原文链接地址:http://blog.csdn.net/lanruoshui/article/details/5090710 原理如下: 1.利用反射进行动态加载和调用. Assembly assem ...

  2. R程序书写规范

    suppressMessages(library(xxx)) # 导入所需的R包 suppressMessages(library(xxx)) # 导入所需的R包 fucntion02 <- f ...

  3. Java高级开发_性能优化的细节

    一.核心部分总结: 尽量在合适的场合使用单例[减负提高效率] 尽量避免随意使用静态变量[GC] 尽量重用对象,避免过多过常地创建Java对象[最大限度地重用对象] 尽量使用final修饰符[内联(in ...

  4. 在WIN7操作系统下,如何显示文件夹里文件的数目

    在文件夹的“查看”选项中选择“状态栏”,那么在任务栏中可以显示windows7系统中文件夹中文件的数目.具体操作请参照以下步骤. 1.首先开启电脑,在电脑中进入到任意一个文件夹中. 2.然后在文件夹界 ...

  5. 【Kubernetes学习之三】Kubernetes分布式集群架构

    环境 centos 7 一.Kubernetes分布式集群架构1.Kubernetes服务注册和服务发现问题怎么解决的?每个服务分配一个不变的虚拟IP+端口, 系统env环境变量里有每个服务的服务名称 ...

  6. Linux 就该这么学 CH09 使用ssh服务管理远程主机

    1 .配置网络服务 1)配置网络参数   五种配置网络的方法:命令行,编译网络配置文件,nmtui(旧版ui界面),nm-connection-edit(新版ui),VM虚拟机右上角图标等.  这里配 ...

  7. python cython c 性能对比

    我们用以下方法计算百万以上float型数据的标准偏差,以估计各个方法的计算性能: 原始python numpy cython c(由cython调用) python 原始方法: # File: Std ...

  8. 详解redis持久化

    我们的Redis必须使用数据持久化吗?如果我们的Redis服务器只作为缓存使用,Redis中存储的所有数据都是从其他地方同步过来的备份,那么就没必要开启数据持久化的选项.Redis提供了将数据定期自动 ...

  9. BFS --- 模板题

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36079   Accepted: 11123 ...

  10. Laravel学习记录

    1. stream 下载响应 response()->streamDownload(function (){ echo "test" // 输出 },'文件名');