热门标签 | 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


推荐阅读
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • 鼠标悬停出现提示信息怎么做
    概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 本文探讨了如何在 F# Interactive (FSI) 中通过 AddPrinter 和 AddPrintTransformer 方法自定义类型(尤其是集合类型)的输出格式,提供了详细的指南和示例代码。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 本文详细介绍如何使用 HTML5 和 JavaScript 实现一个交互式的画板功能。通过具体代码示例,帮助读者理解 Canvas API 的基本用法及其在绘图应用中的实际应用。 ... [详细]
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社区 版权所有