环形石子合并【n^2做法】

这篇博客探讨了如何解决环形排列的石子合并问题,目标是最小化合并过程中的得分。通过应用四边形不等式优化动态规划(DP)策略,可以有效地解决这个问题。博主分享了一篇学习资源链接,详细介绍了如何实现n^2的时间复杂度解法,并暗示存在一个更高效的NlogN解法。
摘要由CSDN通过智能技术生成

题目链接:https://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/1977.html

 

四边形不等式优化dp

学习博客:https://blog.csdn.net/noiau/article/details/72514812

环形排列 N 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的 2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。求 N 堆石子合并成一堆的最小得分。

 

(其实还有NlogN的做法)

#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = (a); i <= (b); i++)
#define per(i, a, b) for(int i = (a); i >= (b); i--)
#define mp make_pair
#define pb push_back
#define ls (o<<1)
#define rs (o<<1|1)
#define ll long long
using namespace std;
const int N = 10010;
int n,m,s[N],dp[N][N],sum[N],pos[N][N];
int oper;
int main() {
   // freopen("a.txt","r"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值