首页 > 石子合并
头像 牛客947274517号
发表于 2020-06-17 18:03:31
题目描述 链接:https://ac.nowcoder.com/acm/problem/51170来源:牛客网 题目思路 原问题:找到n堆石子合并的最小代价dp[1][n]子问题:找到第i到j堆石子合并的最小代价dp[i][j]第i到j堆石子合并的最小代价=第i到k堆石子合并的最小代价+第(k+1 展开全文
头像 威风镰鼬
发表于 2021-10-08 13:28:28
思路 区间DP模板题。 代码 #include<bits/stdc++.h> using namespace std; int n,a[505],mx[505][505],mi[505][505],sum[505]; int main(){ scanf("%d",&n); 展开全文
头像 修补骑士
发表于 2025-06-19 12:45:40
非常经典的区间dp题啊,这种题的数据结构不大,可以从一些比如n3复杂的的方式入手 对于状态转移方程,区间[a,b]与[x,y]合并,代价就是:两个区间之前合并到这一步所记录的代价+他们自己的代价。也就是说我们需要维护两个数组:dp与presum来分别记录路径代价与区间重量总和,对于每个大的区间,可以 展开全文
头像 m0moo
发表于 2020-07-13 15:01:05
链接:https://ac.nowcoder.com/acm/problem/51170来源:牛客网 题目描述 设有N堆沙子排成一排,其编号为1,2,3,…,N1,2,3,\dots ,N1,2,3,…,N(N≤300)(N\leq 300)(N≤300)。每堆沙子有一定的数量,可以用一个整数来描述 展开全文
头像 瑜画
发表于 2020-06-08 22:54:18
设石子总数为n所求问题:1到n这些石子合并最少需要多少代价由于石子合并的顺序可以任意,我们将石子分为两个部分子问题:1到k这堆石子合并,k+1到n这堆石子合并,再把两堆石子合并,需要多少代价(1<=k<=n) 那么便可以得到状态转移方程 dp[i][j]=min(dp[i][k]+dp[ 展开全文
头像 Doria——tt
发表于 2022-08-09 17:18:41
石子合并  假设只有2堆石子,显然只有1种合并方案  如果有3堆石子,则有2种合并方案,((1,2),3)和(1,(2,3))  如果有k堆石子呢?                展开全文
头像 ______________________
发表于 2020-08-08 15:05:27
石子合并 (动态规划)无环合并最小,只能相邻状态转移方程: f[i][j] = min(f[i][k],f[k+1][j])+sum[i][j];表示:从i到j 的最小合并值动态规划意思是找到一个方程,然后可以从小一直推大,直到可知题目所求,所以从最小应有一个边界 #include<bits 展开全文
头像 LXNHB
发表于 2023-12-11 13:30:01
区间dp模板题 #include<bits/stdc++.h> using namespace std; int n; const int M=305; const int INF=0x3f3f3f3f; int a[M],sum[M]; int dp[M][M]; int main() 展开全文
头像 18duangduang
发表于 2020-07-10 16:21:17
类似题目:https://ac.nowcoder.com/acm/problem/50493 石子位置成一个环(就是多存一遍石子,跑2*n大致题意: 个石子,每个石子有一定的价值,每次可以合并相邻个石子,合并的代价是两个石子的价值和,合并完后两个石子的价值累加一成石子的价值,问将 个石子合并成一个石 展开全文
头像 11D_Beyonder
发表于 2020-06-10 00:19:35
题目描述 设有N堆沙子排成一排,其编号为 。每堆沙子有一定的数量,可以用一个整数来描述,现在要将这 堆沙子合并成为一堆,每次只能合并相邻的两堆,合并的代价为这两堆沙子的数量之和,合并后与这两堆沙子相邻的沙子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同,如有 堆沙子分别为 ,我们可 展开全文