HDU 5092 Seam Carving (dp)
题意,给一个数字矩阵,要求从上往下的一条路径,使这条路径上数字之和最小,如有多条输出最靠右的一条。
数字三角形打印路径。。。
一般打印路径有两种选择,一是转移的时候加以记录,二是通过检查dp值回溯。
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int maxn = ;
int g[maxn+][maxn];
int d[maxn+][maxn];
int pa[maxn+][maxn];
int m,n;
const int INF = 1e9;
void init(){
memset(*pa,-,sizeof(*pa));
for(int i = ; i < maxn; i++)
d[i][] = INF;
} vector<int> ans;
void print_ans(int s){
ans.clear();
ans.push_back(s);
for(int i = m-; i > ; i--){
s = pa[i][s];
ans.push_back(s);
}
for(int i = ans.size()-; i > ;i--){
printf("%d ",ans[i]);
}
printf("%d\n",ans[]);
} void work()
{
for(int i = ; i <= n; i++ )
d[][i] = g[][i];
for(int i = ; i < m; i++){
d[i][n+] = INF;
}
for(int i = ; i < m ;i++){
for(int j = ; j <= n ; ++j ){
int Min = -;
for(int k = ; k <=; k++){
if(d[i-][j+k] <= d[i-][j+Min]){
Min = k;
}
}
pa[i][j] = j+Min;
d[i][j] = d[i-][j+Min] + g[i][j];
}
}
int Min = ;
for(int i = ; i <= n; i++ ){
if(d[m-][Min] >= d[m-][i]){
Min = i;
}
}
print_ans(Min);
} int main()
{
int T;
init();
scanf("%d",&T);
for(int i = ; i <= T; i++){
printf("Case %d\n",i);
scanf("%d%d",&m,&n);
for(int i = ; i < m; i++)
for(int j = ; j <= n; j++)
scanf("%d",g[i]+j);
work();
}
return ;
}
HDU 5092 Seam Carving (dp)的更多相关文章
- hdu 5092 Seam Carving (简单数塔DP,题没读懂,,不过可以分析样例)
题意: 给一个m*n的矩阵,每格上有一个数. 找从第1行到第m行的一条路径,使得这条路径上的数之和最小. 路径必须满足相邻两行所选的两个数的纵坐标相邻(即一个格子必须是另一个格子的周围八个格子中的一个 ...
- HDU 5791:Two(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description Alice gets two sequences A ...
- HDU 4833 Best Financing(DP)(2014年百度之星程序设计大赛 - 初赛(第二轮))
Problem Description 小A想通过合理投资银行理财产品达到收益最大化.已知小A在未来一段时间中的收入情况,描述为两个长度为n的整数数组dates和earnings,表示在第dates[ ...
- HDU 4833 Best Financing (DP)
Best Financing Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 1422 重温世界杯(DP)
点我看题目 题意 : 中文题不详述. 思路 : 根据题目描述及样例可以看出来,如果你第一个城市选的是生活费减花费大于等于0的时候才可以,最好是多余的,这样接下来的就算是花超了(一定限度内的花超),也可 ...
- HDU 1176 免费馅饼(DP)
点我看题目 题意 : 中文题.在直线上接馅饼,能接的最多是多少. 思路 :这个题其实以前做过.....你将这个接馅饼看成一个矩阵,也不能说是一个矩阵,反正就是一个行列俱全的形状,然后秒当行,坐标当列, ...
- hdu 4055 Number String(dp)
Problem Description The signature of a permutation is a string that is computed as follows: for each ...
- 【HDU - 4345 】Permutation(DP)
BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. ...
- HDU 5375 Gray code(DP)
题意:给一串字符串,里面可能出现0,1,?,当中问号可能为0或1,将这个二进制转换为格雷码后,格雷码的每位有一个权值,当格雷码位取1时.加上该位权值,求最大权值和为多少. 分析:比赛的时候愚了.竟然以 ...
随机推荐
- 数据库路由中间件MyCat - 源代码篇(13)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 4.配置模块 4.2 schema.xml 接上一篇,接下来载入每个schema的配置(也就是每个MyCat ...
- mock测试方法及实践改进
此文已由作者翟曜授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. mock测试常见的定义为:在测试过程中,对于某些不易构造或不易获取的对象,通过创建虚拟对象的方式来模拟测试的测 ...
- TCP/IP之大明邮差
大明王朝天启四年, 清晨. 天色刚蒙蒙亮,我就赶着装满货物的马车来到了南城门, 这里是集中处理货物的地方 , 一队一队的马车都来到这里, 城头的士兵带着头盔,身披盔甲, 手持长枪, 虎视眈眈的注视这下 ...
- hdu1520 Anniversary party
Anniversary party HDU - 1520 题意:你要举行一个晚会,所有人的关系可以构成一棵树,要求上下级关系的人不能同时出现,每一个人都有一个rating值,要求使整个晚会的ratin ...
- 2014-9-13 NOIP模拟赛
NOIP2014模拟赛 ——lwher 题目名 环上的游戏 舞蹈课 数位和乘积 源文件 cycle.cpp/c/pas dancingLessons.pas/cpp digit.cpp.cpp/c/p ...
- uoj#278. 【UTR #2】题目排列顺序(拓扑排序)
传送门 对于每一个位置\(i\)来说,上一个和它的\(f_i\)相同的点一定比它大,我们从上一个\(f_i\)和它相同的点向它连边.第一个\(f_i-1\)出现的位置一定比它小,把它向那个位置连边. ...
- [Xcode 实际操作]六、媒体与动画-(11)UIView视图卷曲动画的制作
目录:[Swift]Xcode实际操作 本文将演示UIView视图卷曲动画的制作. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit cla ...
- 判断当前浏览器是否是IE浏览器
今天修改后台人员遗留的兼容性问题时,遇到了有些样式只是在IE浏览器下面不正常,为了让自己记住,所以把代码贴一下 ## 代码 ##if (!!window.ActiveXObject || " ...
- P2184 贪婪大陆 树状数组
树状数组帅炸了....又被一道水题轻虐,又被学长指出了一个错误....我太菜了QAQ 开两个树状数组,一个记录左端点,一个记录右端点: 共有cnt(总数) - (<l的右端点数目) - (> ...
- Ubuntu 下修改Tomcat和Jetty默认的JDK和初始内存
修改/etc/default/tomcat 或者 /etc/default/jetty 文件 中的 JAVA_HOME 和 JAVA_OPTS