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

P1854 花店橱窗布置 解题笔记

思路:

我们用一个二维数组 \(dp[i][j]\) 来表示第 \(i\) 束花放不放在第 \(j\) 个花瓶中的最大值,此时,我们可以进行以下两个操作:

  • 不放,状态可以描述为:\(dp[i][j] = dp[i][j - 1]\)
  • 放,状态可以描述为:\(dp[i][j] = dp[i - 1][j - 1] + a[i][j]\)

由于题目还要求求方案,所以我们用一个数组保存转移路径,从前往后回溯得到答案。

中途出现的错误:

  1. 美学值可能为负数,在初始化 \(dp\) 数组时未将它的值改为负数。
  2. 在求出最大美学值后用 dfs 来求方案,导致超时。
  3. 求解过程中为判重花瓶,导致好几束花插在了一个花瓶里。

code:

点击查看代码
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1009][1009],b[1009][1009],c[1009][1009],e[1009];
int main()
{cin>>n>>m;for(int i=0;i<=m;i++){b[0][i]=0;}for(int i=1;i<=n;i++){long long mx=0,d=0;for(int j=1;j<=m;j++){cin>>a[i][j];b[i][j]+=a[i][j]+50;if(b[i][j]>=mx)d=j;mx=max(b[i][j],mx);b[i+1][j+1]=mx;c[i+1][j+1]=d;}if(i==n){cout<<mx-50*n<<endl;for(int j=n;j>=1;j--){e[j]=d;d=c[j][d];}for(int j=1;j<=n;j++){cout<<e[j]<<" ";}}}
}
http://www.hskmm.com/?act=detail&tid=34497

相关文章:

  • P1896[SCOI2005]互不侵犯 解题笔记
  • habse
  • hbase
  • 微信小程序 在云函数本地调试时,总是提示node modules 未安装,立即安装。解决方法
  • Godot-C#场景之间的切换
  • 读书日记1
  • 【ARM CoreLink 系列 3.1 -- CCI-500 详细介绍 -上半部】
  • 央企程序员AI创业一个月感受 ✨
  • tryhackme-预安全-网络基础知识-局域网介绍-05
  • 10.19
  • 从众多知识汲取一星半点也能受益匪浅【day16(2025.10.18)】(加班但只加到四点半)
  • (个人思考)游戏技能的实现
  • 模拟赛T4 分析
  • ubuntu系统中containerd的cni网络配置
  • 十月阅读笔记
  • #20232408 2025-2026-1 《网络与系统攻防技术》实验二实验报告 - 20232408
  • 题解:P2672 [NOIP 2015 普及组] 推销员
  • 一文读懂Schnorr签名
  • 如何选择合适的SAP实施公司?3步锁定靠谱的SAP服务商
  • CSP-S2024
  • 10/19
  • 论DCT和IDCT的重要性,汇编SIMD版第一,此贴第二,就是这么狂 :-)
  • 这些SAP实施公司哪家强?国内比较好的SAP实施商推荐
  • 25秋周总结5
  • UML图
  • 博士研究文档管理技术指南
  • 题解:P12128 [蓝桥杯 2024 省 B 第二场] 质数变革
  • 题解:P12003 在小小的奶龙山里面挖呀挖呀挖(加强版)
  • apisix升级完整流程
  • 10.11-10.18 一周总结