洛谷 P1854 花店橱窗布置 题解
2024-08-22 20:07:00
Analysis
给定一个f*v的矩阵
要求从第一行走到第f行,每行取走一个数,
且该行所取的数必须必上一行所取的数的列数大 , 求所能取走的最大值
注意每一行所取走的数字的列数必须大于等该行的行号
因为必须给前面的花留下足够的花瓶
同理每一行所能取的最大的花瓶号必须小于等于v-(f-该行行数)
由此我们便可以很容易的得出状态转移方程
dp[i][j]=max(dp[i-1][k])+d[i][j](k<j)dp[i][j]=max(dp[i−1][k])+d[i][j](k<j)
其中dp[i][j]dp[i][j]表示从第一行走到第i行并取走该行第j个数所能取得的最大值
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#define int long long
#define maxn 100+10
#define INF 9223372036854775807
using namespace std;
inline int read()
{
int x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline void write(int x)
{
if(x<){putchar('-');x=-x;}
if(x>)write(x/);
putchar(x%+'');
}
int f,v;
int map[maxn][maxn];
int dp[maxn][maxn];
int path[maxn][maxn];
stack<int> s;
inline void print(int num,int x)
{
if(num==) return;
s.push(x);
print(num-,path[num][x]);
}
signed main()
{
freopen("flower.in","r",stdin);
freopen("flower.out","w",stdout);
memset(dp,,sizeof(dp));
f=read();v=read();
for(int i=;i<=f;i++)
for(int j=;j<=v;j++)
map[i][j]=read();
for(int i=;i<=v;i++) dp[][i]=map[][i];
for(int i=;i<=f;i++)
for(int j=i;j<=v-(f-i);j++)
for(int k=;k<j;k++)
{
if(dp[i-][k]+map[i][j]>dp[i][j])
{
dp[i][j]=dp[i-][k]+map[i][j];
path[i][j]=k;
}
}
int ans=-INF,fnum=;
for(int i=;i<=v;i++)
if(dp[f][i]>ans)
{
ans=dp[f][i];
fnum=i;
}
write(ans);
printf("\n");
print(f,fnum);
while(!s.empty())
{
write(s.top());
printf(" ");
s.pop();
}
return ;
}
请各位大佬斧正(反正我不认识斧正是什么意思)
最新文章
- Mysql性能优化二
- 2015-2016-2 《Java程序设计》项目小组博客
- K-means算法及文本聚类实践
- iOS开发之loadView和viewDidLoad总结
- Unity3D 纹理偏移(TextureOffset)浅析
- RocketMQ学习记录
- FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
- VC6.0的工程设置解读Project--Settings
- php和java静态变量用途的思考
- Sersync同步过滤.svn文件夹
- JS原生javascript可以直接写id名来选取元素
- 【Atom】在一个中/大型项目中,那些好用而强大的atom功能
- Web前端学习——HTML
- 【精选】Nginx模块Lua-Nginx-Module学习笔记(二)Lua指令详解(Directives)
- git 使用过程中遇到的问题does not appear to be a git repository Could not read from remote respository
- Grid布局指南
- include 指令和 include 动作引入 jsp 页面时中文乱码
- 深入理解,函数声明、函数表达式、匿名函数、立即执行函数、window.onload的区别.
- T4学习- 2、创建设计时模板
- 《DSP using MATLAB》Problem 4.17
热门文章
- [洛谷P2056][ZJOI2007]捉迷藏(2019-7-20考试)
- Spring Aop中execution的语法
- lombok使用教程
- 【洛谷 P2226】 [HNOI2001]遥控赛车比赛(最短路)
- vue 生命周期的详解
- 如何使用API的方式消费SAP Commerce Cloud的订单服务
- spring的Autowired、Resource、Inject的使用
- c# 写入文本文件
- angularcli 第四篇(执行事件)
- P3620 [APIO/CTSC 2007]数据备份[优先队列+贪心]