热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HDU1176:免费馅饼问题的动态规划解法分析

题目“免费馅饼”通过动态规划方法进行了解析。该问题的时间限制为Java2000ms和其他语言1000ms,内存限制为Java65536K和其他语言32768K。本文详细探讨了如何利用动态规划算法高效求解此问题,并对算法的时间复杂度和空间复杂度进行了深入分析。此外,还提供了具体的实现步骤和代码示例,帮助读者更好地理解和应用这一方法。


免费馅饼
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 23808    Accepted Submission(s): 8025





Problem Description


都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标:
bubuko.com,布布扣

为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中其中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼)


 




Input


输入数据有多组。每组数据的第一行为以正整数n(0


 




Output


每一组输入数据对应一行输出。输出一个整数m,表示gameboy最多可能接到m个馅饼。
提示:本题的输入数据量比较大,建议用scanf读入,用cin可能会超时。


 




Sample Input

6
5 1
4 1
6 1
7 2
7 2
8 3
0



 




Sample Output

4



 




Author


lwg


 




Recommend


We have carefully selected several similar problems for you:  2084 1069 1058 1257 1421 


 




Statistic | Submit | Discuss | Note

今天做了一道有趣的dp题。。。题目不难。。但是居然坑了我。。

题解:dp[i][j]代表在第j秒时在第i个位置最多可以得到多少个馅饼。。

f[i][j] 代表第j秒时在第i个位置有多少个馅饼掉下。。

dp[i][j] = max(dp[i-1][j-1],dp[i][j-1],dp[i+1][j-1])+f[i][j];

本来状态方程式没错的。但是忽略了一种情况。。比如dp[0][1]这是不可能存在的。。因为第一秒时是不可能到达

0这个点的。。坑!

所以还要判断一下这个状态是不是可以到达的。。

最后 代码:

#include
#include
#include
#include
#include
using namespace std;
int dp[11][100002];
int f[11][100002];
int main() {
int n,i,j;
int l,r;
while(scanf("%d",&n) && n!=0) {
memset(f,0,sizeof(f));
int Max = 0;
for(i=0;i scanf("%d%d",&l,&r);
f[l][r]++;
Max = Max }
memset(dp,0,sizeof(dp));
int sum = 0;
//dp[5][0] = 1;
for(i=1;i<=Max;i++) {
for(j=0;j<11;j++) {
sum = dp[j][i-1];
if(abs(j-5)<=i && j>0) sum = max(dp[j-1][i-1],sum);
if(abs(j-5)<=i && j<10) sum = max(dp[j+1][i-1],sum);
if(abs(j-5)<=i)sum+=f[j][i];
dp[j][i] = max(sum,dp[j][i]);
}
}
sum = 0;
for(i=0;i<11;i++) {
sum = max(dp[i][Max],sum);
}
printf("%d\n",sum);
}
return 0;
}



hdu1176免费馅饼(dp),布布扣,bubuko.com


推荐阅读
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
author-avatar
壹滒_918
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有