当前位置: 首页 > news >正文

luogu-P1544 三倍经验题解

传送门

记忆化搜索

点击查看代码
#include<bits/stdc++.h>
using namespace std; 
using LL=long long;  // 定义长整型别名
constexpr int N=110;  // 定义最大行数LL a[N][N];          // 存储数字金字塔
LL f[N][N][N];       // 记忆化数组,f[i][j][p]表示从(i,j)位置出发,还剩p次使用3倍机会时的最大得分
bool vis[N][N][N];   // 标记数组,记录状态是否已经计算过
int n,k,ans;         // n:行数,k:最大3倍次数,ans:最终答案// 深度优先搜索函数
// 参数:i-当前行,j-当前列,p-已使用的3倍次数
LL dfs(int i,int j,int p)
{// 边界条件检查:超出金字塔范围或使用次数超过限制if(i<0||i>n||j<0||j>n||p>k) return 0;// 如果当前状态已经计算过,直接返回结果if(vis[i][j][p]) {return f[i][j][p];}else{// 如果还有使用3倍的机会if(p!=k){// 选择左下方向并使用3倍机会f[i][j][p]=max(f[i][j][p],dfs(i+1,j,p+1)+3*a[i][j]);// 选择右下方向并使用3倍机会f[i][j][p]=max(f[i][j][p],dfs(i+1,j+1,p+1)+3*a[i][j]);}// 不使用3倍机会的情况// 选择左下方向f[i][j][p]=max(f[i][j][p],dfs(i+1,j,p)+a[i][j]);// 选择右下方向f[i][j][p]=max(f[i][j][p],dfs(i+1,j+1,p)+a[i][j]);// 标记当前状态已计算vis[i][j][p]=true;return f[i][j][p];}
}int main()
{// 输入行数和最大3倍次数scanf("%d%d",&n,&k);// 输入数字金字塔for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){cin>>a[i][j]; }}// 初始化记忆化数组为负无穷(因为可能有负数)memset(f,-0x3f,sizeof(f));// 从金字塔顶部(1,1)开始,当前使用0次3倍机会ans=dfs(1,1,0);// 输出最大得分printf("%lld",ans);return 0; 
}

动态规划写法

点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 105; 
int n, k;
ll a[N][N], dp[N][N][5505], maxm = -3e9;
signed main()
{//输入 ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n >> k;//初始化 for(int i = 1; i <= n; ++ i)for(int j = 0; j <= n; ++ j)for(int l = 0; l <= k; ++ l)dp[i][j][l] = -3e9; //a[i][j]最小是-1e9,还要乘3,所以设为-3e9(记得开long long)。 //边输入边做dp for(int i = 1; i <= n; ++ i)for(int j = 1; j <= i; ++ j){cin >> a[i][j];for(int l = 0; l <= k && l <= i; ++ l){if(l == 0)dp[i][j][l] = max(dp[i - 1][j][l], dp[i - 1][j - 1][l]) + a[i][j];else{dp[i][j][l] = max(dp[i - 1][j][l], dp[i - 1][j - 1][l]) + a[i][j];dp[i][j][l] = max(dp[i][j][l], max(dp[i - 1][j][l - 1], dp[i - 1][j - 1][l - 1]) + a[i][j] * 3);}}}k = min(k, n); // 不然可能导致没搜到k次,值为-3e9的情况。//搜索答案 for(int j = 1; j <= n; ++ j)for(int l = 0; l <= k; ++ l)maxm = max(maxm, dp[n][j][l]);//输出 cout << maxm;return 0;
}
http://www.jsqmd.com/news/30851/

相关文章:

  • 2025年靠谱的动物雕塑优质厂家推荐榜单
  • 2025 年调直机厂家最新推荐排行榜权威发布:聚焦伺服高速机型,揭秘行业前五优质企业高速/铁线/青岛/扁铁调直机优质企业
  • NOIP2025 倒数第14场模拟赛 赛后总结
  • 2025年热门的岳轩圆白红油豆瓣酱厂家最新实力排行
  • 2025/11/4
  • 2025年评价高的1680D单双股布箱包布厂家最新热销排行
  • 2025年评价高的粮食输送带厂家最新TOP排行榜
  • 2025/11/1
  • 2025 年集成平台公司最新推荐榜,技术实力与市场口碑深度解析,助力企业数字化转型选对服务商
  • 2025年质量好的农药流变改性触变剂品牌厂家排行榜
  • 2025年口碑好的印花布牛津布优质厂家推荐榜单
  • 2025/10/31
  • 2025/11/3
  • 2025年靠谱的高分子分散剂品牌厂家排行榜
  • 2025年中国十大高氧舱/抗衰老设备品牌产品生产厂家排行榜【榜中榜】
  • 2025年耐用的公园移动厕所厂家最新TOP实力排行
  • 2025年知名的非油炸方便面生产线厂家最新推荐排行榜
  • 2025 年 11 月中空板周转箱,中空板垫板,pp 中空板厂家最新推荐,产能、专利、环保三维数据透视!
  • 利用地名来查询天气预报,在jmeter中查看响应结果
  • 2025年知名的机床旋转接头最新TOP品牌厂家排行
  • Adobe Photoshop Elements 2026 v26.0 更新详解 | AI 生成、WebP 支持、交互优化全面升级!
  • 2025年靠谱的弹力三明治网布厂家最新TOP排行榜
  • 2025年11月石墨加工厂家推荐榜:基于用户需求的综合评价与排名
  • 2025年中国十大枸杞品牌生产厂家排行榜【榜中榜】
  • 蓝凌EKP(OA)流程相关表格
  • 2025年11月亮化工程公司推荐评价:行业标准与实操指南
  • 2025年11月石墨加工厂家推荐排名:专业对比与实用指南
  • 在fiddler中模拟网络中断、下载JDK、 JMeter生包、修改title标签
  • 2025年11月武汉律师推荐榜单:权威律师综合对比与选择指南
  • 2025年优秀的板式换热器机组厂家推荐及选择参考