hdu1876(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1876
题意:问机器人到达终点的过程中最多有几次完全消耗完能量,消耗完这么多次能量的方式有几种。
分析:模拟一下可知,每次走到下一次消耗完时必定在一条对角线上。
以sample为例:
由于整个过程是以对角线的方向递推下去的,每次必定是往右下方走的,所以只需按着正常循环递推即可,当然按对角线右下方循环也可,不过那样略微麻烦。dp[i][j].num表示走到点(i,j)时消最多次耗完能量的次数,dp[i][j].cnt表示走到点(i,j)时消最多次耗完能量的方式。
状态转移方程为:
if(dp[x][y].num<dp[i][j].num+1)
{
dp[x][y].num=dp[i][j].num+1;
dp[x][y].cnt=dp[i][j].cnt;
}
else if(dp[x][y].num==dp[i][j].num+1)
dp[x][y].cnt+=dp[i][j].cnt;
本题还有好几个坑,能量为0的格子不能走,在终点时就不用递推了,样例没有刚好在终点时消耗完能量,所以这里被坑得好惨T^^T
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#define LL long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define N 10010
using namespace std;
struct node
{
int cnt,num;
} dp[][];
int flag[][],a[][];
int main()
{
int t,n,m,x,y;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=; i<=n; i++)
for(int j=; j<=m; j++)scanf("%d",&a[i][j]);
memset(flag,,sizeof(flag));
memset(dp,,sizeof(dp));
flag[][]=;
dp[][].cnt=;
for(int i=; i<=n; i++)
for(int j=; j<=m; j++)
{
if(i==n&&j==m)continue;//这里尤为注意
if(flag[i][j])
{
if(!a[i][j])continue;//能量为0时不能走
x=i+a[i][j];
y=j;
int t=a[i][j]+;
if(x+y<=m+n)
{
while(t--)
{
if(x>n||y>m||x<=||y<=)//不在方格内不算
{
x--;
y++;
continue;
}
flag[x][y]=;
if(dp[x][y].num<dp[i][j].num+)//取次数多的
{
dp[x][y].num=dp[i][j].num+;
dp[x][y].cnt=dp[i][j].cnt;
}
else if(dp[x][y].num==dp[i][j].num+)
dp[x][y].cnt+=dp[i][j].cnt;
x--;
y++;
}
}
else//走到终点没消耗完能量的
{
if(dp[n][m].num<dp[i][j].num)
{
dp[n][m].num=dp[i][j].num;
dp[n][m].cnt=dp[i][j].cnt;
}
else if(dp[n][m].num==dp[i][j].num)
dp[n][m].cnt+=dp[i][j].cnt;
}
}
}
printf("%d %d\n",dp[n][m].num,dp[n][m].cnt);
}
}
hdu1876(dp)的更多相关文章
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
- 最长公共子序列长度(dp)
/// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...
随机推荐
- ImageMagick wrapper for php
https://code.google.com/archive/p/phmagick/
- How to retreive raw post data from HttpServletRequest in java
public static String getPostData(HttpServletRequest req) { StringBuilder sb = new StringBuilder(); t ...
- 1.1.7-学习Opencv与MFC混合编程之---为画图工具添加工具栏
源代码:http://download.csdn.net/detail/nuptboyzhb/3961701 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...
- 最新OpenCV2.4.6与VS2010开发环境搭建
OpenCV2.4.6与VS2010开发环境搭建 由于很久没有用OpenCV了,之前用的是1.0版本和VC++6.0.现在已经到了VS2010+OpenCV2.4.6.安装使用之后,发现OpenCV的 ...
- 性能测试之LoardRunner 手动关联二
概述: 1.如果寻找左右边界值 2.关联函数详解 以下是详细介绍 1.如果寻找左右边界值 <以login 为例> Step1.录制两份相同的业务流程的的脚本,输入的数据要相同 Step2. ...
- String 中的秘密
Navigation: 数据类型相关 > Delphi 的字符及字符串 > [3] - String 中的秘密 //String 的指针地址及实际的内存地址 var str: str ...
- 《c陷阱与缺陷》笔记--注意边界值
如果要自己实现一个获取绝对值的函数,应该都没有问题,我这边也自己写了一个: void myabs(int i){ if(i>=0){ printf("%d\n",i); }e ...
- 经典的C++库【转帖】
源地址:http://www.deuxmille.org/archives/1472 基础类1. Dinkumware C++ Library 参考站点:http://www.dinkumware.c ...
- (并查集)POJ 1308 & HDU 1325
一开始以为两道题是一样的,POJ的过了直接用相同代码把HDU的交了,结果就悲剧了.最后发现HDU的没有考虑入度不能大于一. 题意:用树的定义来 判断吧,无环,n个结点最多有n-1条边,不然就会有环.只 ...
- HttpClient使用详解
http://itindex.net/detail/52566-httpclient HttpClient使用详解 标签: httpclient | 发表时间:2015-01-22 12:07 | 作 ...