AcWing 313. 花店橱窗 (线性DP)打卡
题目:https://www.acwing.com/problem/content/315/
题意:有一个矩阵,你需要在每一行选择一个数,必须保证前一行的数的下标选择在下一行的左边,即下标有单调性,然后求最大值,并且输出选择的路径
思路:线性DP,两维状态 dp[n][m] ,前n个位置选择m个数的最大价值,因为可以隔开,然后我们枚举中介,是由前一行的哪个位置来推出当前位置的最大值,特别注意负数情况,初始值要选好,然后要小心你当前只有n个数,但是在记录下标时已经记录了n+1个前缀了,然后路径的话我们用个pre数组,记录当前最大价值是由前一行哪个位置推出来的即可,然后递归输出
#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
using namespace std;
typedef long long ll;
ll n,m;
ll a[][];
ll dp[][];
ll pre[][];
void print(ll n,ll k){
if(n==) return;
print(n-,pre[n][k]);
if(n!=)
printf(" %lld",k);
else printf("%lld",k);
}
int main(){
cin>>n>>m;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
cin>>a[i][j];
if(i==||j==){
dp[i][j]=a[i][j];
}
}
}
for(int i=;i<=m;i++){
for(int j=;j<=n;j++){
for(int k=;k<i;k++){
if(k<j-) continue;
if(dp[j][i]==||(dp[j][i]<dp[j-][k]+a[j][i])){
dp[j][i]=dp[j-][k]+a[j][i];
pre[j][i]=k;
}
}
}
}
ll mx=-mod;
ll dex=;
for(int i=n;i<=m;i++){
if(mx<dp[n][i]){
mx=dp[n][i];
dex=i;
}
}
cout<<mx<<"\n";
print(n,dex);
}
/*
3 5
-5 -4 -3 -2 -1
-5 -4 -3 -2 -1
-5 -4 -3 -2 -1
*/
AcWing 313. 花店橱窗 (线性DP)打卡的更多相关文章
- 【洛谷P1854】花店橱窗 线性dp+路径输出
题目大意:给定 N 个数字,编号分别从 1 - N,M 个位置,N 个数字按照相对大小顺序放在 M 个位置里,每个数放在每个位置上有一个对答案的贡献值,求一种摆放方式使得贡献值最大. 题解:一道典型的 ...
- CH5E02 [IOI1999]花店橱窗[暴力dp]
众所周知,这个人太菜了,所以她又来切水题了. 显然设计状态表示第$i$朵花放第$j$瓶中的最大价值.然后瞎转移一波是n三方的,加个前缀max变成n方就水过去了. 当然这题可以搜索剪枝的. 虐lyd书上 ...
- CH5E02 花店橱窗【线性DP】
5E02 花店橱窗 0x5E「动态规划」练习 背景 xq和他的老婆xz最近开了一家花店,他们准备把店里最好看的花都摆在橱窗里.但是他们有很多花瓶,每个花瓶都具有各自的特点,因此,当各个花瓶中放入不同的 ...
- [IOI1999]花店橱窗布置(DP路径记录)
题目:[IOI1999]花店橱窗布置 问题编号:496 题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V ...
- 线性dp
线性dp应该是dp中比较简单的一类,不过也有难的.(矩乘优化递推请出门右转) 线性dp一般是用前面的状态去推后面的,也有用后面往前面推的,这时候把循环顺序倒一倒就行了.如果有的题又要从前往后推又要从后 ...
- 花店橱窗(flower)
花店橱窗(flower) 题目描述 某花店现有f束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V是花瓶的数目.花束可以移动,并 ...
- 洛谷P1854 花店橱窗布置 分析+题解代码
洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...
- 2018.08.16 洛谷P2029 跳舞(线性dp)
传送门 简单的线性dp" role="presentation" style="position: relative;">dpdp. 直接推一推 ...
- [JOYOI] 1124 花店橱窗
题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目背景 xq和他的老婆xz最近开了一家花店,他们准备把店里最好看的花都摆在橱窗里.但是他们 ...
随机推荐
- MySQL 导入导出 CSV 文件
导入 导出 清空表中的所有数据 注意事项 常见问题 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-pri ...
- Vue自定义事件:触发自定义事件
一 项目结构 二 子组件(Mongo.vue) <template> <button @click="eat">按钮</button> < ...
- Jenkins持续集成_02_添加python项目&设置定时任务
前言 自动化测试脚本编写后,最终目的都是持续集.持续集成可以实现一天多次部署运行自动化脚本,对功能进行不断监控测试.由于小编使用python编写的自动化脚本,这里仅讲解下如何在Jenkins中添加py ...
- poj1065Wooden Sticks(dp——最长递减数列)
Description There is a pile of n wooden sticks. The length and weight of each stick are known in adv ...
- OJ测试数据追溯方法
https://blog.csdn.net/iwts_24/article/details/79240987 我是从这个博客知道还有从比赛官方网站扒测试数据的方法,但是下面的链接有些是失效的. 所以我 ...
- vsphere虚拟化之 DNS服务的创建(二)
1.创建域控的DNS服务器,打开"服务器管理器",由此可以看到AD域安装成功后,DNS服务也附带安装成功. 2.点击“工具”--“DNS” 3.点击“正向查询区域”--“best. ...
- JavaScript LoopQueue
function Queue() { var items = []; this.enqueue = function(element) { items.push(element) } this.deq ...
- Linux统计即时网速
Linux查看网络即时网速 sar -n DEV 1 1代表一秒统计并显示一次 在Linux下还有两个工具可以实时的显示流量信息 一个是iftop 另一个是nload.
- 【洛谷UVA307】小木棍Sticks
小木棍Sticks[传送门] 算法的话:dfs+超强剪枝: (另外注意UVA上好像不接受万能头[因为万能头WA了两次,瑟瑟发抖]) 思路: 最直接的思路,枚举木棍长度来dfs,但这样很容易就TLE了. ...
- 二进制安装kubernetes集群
链接地址 https://www.cnblogs.com/leleyao/p/10453848.html 安装etcd 证书制作 apiserver 证书 [root@master01 ssl]# ...