没有合适的资源?快使用搜索试试~ 我知道了~
9石子合并问题1
需积分: 0 0 下载量 17 浏览量
2022-08-08
23:15:51
上传
评论
收藏 13KB DOCX 举报
温馨提示
试读
2页
石子合并是只能相邻的合并所以可以用归并的思想DP写:#include <bits/stdc++.h>using namespace std;}//锯木块可以任意
资源详情
资源评论
资源推荐
石子合并是只能相邻的合并
所以可以用归并的思想 DP 写:
#include <bits/stdc++.h>
using namespace std;
const int MAXN=105;
const int INF=0x3f3f3f3f;
int a[MAXN],sum[MAXN];
int dp[MAXN][MAXN];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
for(int len=2;len<=n;len++)//规定长度
{
for(int i=1;i+len-1<=n;i++)//规定开始位置
{
dp[i][i+len-1]=INF;
for(int k=i;k<=i+len-1;k++)//规定截止位置
{
dp[i][i+len-1]=min(dp[i][i+len-1],dp[i][k]+dp[k+1][i+len-1]+sum[i+len-1]-
sum[i-1]);
}
}
}
cout<<dp[1][n]<<endl;
return 0;
}
//
锯木块可以任意两块合并,所以可以采用最小堆维护
#include<bits/stdc++.h>
using namespace std;
const int MAXN=5e4+10;
int main()
{
int n,x;
葡萄的眼泪
- 粉丝: 13
- 资源: 303
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0