1644 免费馅饼(巴蜀oj上的编号)

题面:

         SERKOI最新推出了一种叫做“免费馅饼”的游戏。
        游戏在一个舞台上进行。舞台的宽度为W格,天幕的高度为H格,游戏者占一格。开始时,游戏者站在舞台的正中央,手里拿着一个托盘。
         游戏开始后,从舞台天幕顶端的格子中不断出现馅饼并垂直下落。游戏者左右移动去接馅饼。游戏者每秒可以向左或右移动一格或两格,也可以站在愿地不动。
         馅饼有很多种,游戏者事先根据自己的口味,对各种馅饼依次打了分。同时在8-308电脑的遥控下,各种馅饼下落的速度也是不一样的,下落速度以格/秒为单位。当馅饼在某          一秒末恰好到达游戏者所在的格子中,游戏者就收集到了这块馅饼。
         写一个程序,帮助我们的游戏者收集馅饼,使得收集的馅饼的分数之和最大。
 输入数据:
        第一行:宽度W(1~99奇数)和高度H(1 ~ 100整数)
       接下来给出了一块馅饼信息。由4个正整数组成,分别表示了馅饼的初始下落时刻、水平位置、下落速度、分值。
        游戏开始时刻为0。从1开始自左向右依次对水平方向的每格编号。
 输出数据:
       收集到的馅饼最大分数之和。
 
——————————————分割线————————————————————————————————————————————————————
 
题解:
        由于馅饼下落的时间和速度都不同,人只能向左右移动,馅饼只能向下移动。人和馅饼都同时移动,思考起来比较复杂,因此我们需要转变思路:
       算出每个时刻落到最底层的每个格子有多少分值的馅饼。
        如果将馅饼当成参照物,则馅饼向下落,可以看成馅饼不动,人往上走去摘取馅饼,这样人每1时刻都可以走到上一行的5个格子,
        这道题是经典动规模型数塔的变形,将馅饼落下的位置看做数塔中的列数,将下落的时间看做数塔中的行数,问题转化为求解从塔底到塔顶的最长路径。
        计算出每个格子每个时刻可能达到的馅饼分值,填入W*H的天幕表。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int w,h;
struct pie
{
int time,pos,speed,value,t;
}s[];//用结构体来记录数据
int f[][];//记录决策
int main()
{
cin>>w>>h;
int n=,ss,maxn=-,ans=;
//while (scanf("%d%d%d%d",s[n].time,s[n].pos,s[n].speed,s[n].value)==4)
while (cin>>s[n].time>>s[n].pos>>s[n].speed>>s[n].value)//由于不知道数据个数,用while读入
{
s[n].t=ceil(h/s[n].speed)+s[n].time;//t指该馅饼下落下来(到最后一格)的时间
n++;//这一步核心意思就是将该时间取整,但是是加一位(2.....=3)
}
n-=;//n为馅饼个数
for (int i=;i<=n;i++)
{
f[s[i].pos][s[i].t]+=s[i].value;
maxn=max(s[i].t,maxn);//找到最晚的馅饼的时间
}
for (int j=maxn-;j>=;j--)
for (int i=;i<=w;i++)
{
if (f[i-][j+]&&i->) ans=max(ans,f[i-][j+]);
if (f[i-][j+]&&i>) ans=max(ans,f[i-][j+]);
if (f[i][j+]) ans=max(ans,f[i][j+]);
if (f[i+][j+]&&i+<=w) ans=max(ans,f[i+][j+]);
if (f[i+][j+]&&i+<=w) ans=max(ans,f[i+][j+]);
f[i][j]+=ans;//状态转移方程应用
}
cout<<f[w/+][];//由于人以中间为起点,所以输出(w/2+1,0)
return ;
}

1644 免费馅饼 题解(c++)(S.B.S.)的更多相关文章

  1. 1644 免费馅饼 题解(c++)

    1644 免费馅饼(巴蜀oj上的编号) 题面:          SERKOI最新推出了一种叫做"免费馅饼"的游戏.         游戏在一个舞台上进行.舞台的宽度为W格,天幕的 ...

  2. Hdoj 1176.免费馅饼 题解

    Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁 ...

  3. HDU 1176 免费馅饼 (类似数字三角形的题,很经典,值得仔细理解的dp思维)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)     ...

  4. hdu1176免费馅饼(动态规划,数塔)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. HDU1176 免费馅饼 —— DP

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others ...

  6. 免费馅饼——G

    G. 免费馅饼 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果 ...

  7. nyoj 613 免费馅饼 广搜

    免费馅饼 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...

  8. HDU 1176 免费馅饼

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. 免费馅饼 Why WA

    免费馅饼 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1576  Solved: 577 Description 都说天上不会掉馅饼,但有一天gameb ...

随机推荐

  1. web ppt

    先记录,以后再试试 https://github.com/gnab/remark/wiki http://segmentfault.com/blog/sweetdum/1190000000484121 ...

  2. 如何高效部署前端代码,如css,js...

    看了网上一些文章,做了点总结,顺便再加点自己的东西,简单的说下. 1.利用浏览器的304缓存,但是304叫协商缓存,还是需要与服务器通信一次 2.强制使用浏览器使用本地缓存(cache-control ...

  3. n个人作m幅画

    题目网址: http://codeforces.com/problemset/problem/416/B A well-known art union called "Kalevich is ...

  4. js 自带的 sort() 方法

    1. 方法概述 Array的sort()方法默认把所有元素先转换为String再根据Unicode排序, sort()会改变原数组,并返回改变(排序)后的数组 . 2. 例子 2.1 如果没有提供自定 ...

  5. js 自带的 filter()方法

    1. 方法概述 它用于把Array的某些元素过滤掉,然后返回剩下的元素组成的数组. 2. 例子 2.1 尝试用filter()筛选出素数: 'use strict'; function get_pri ...

  6. 六个创建模式之工厂方法模式(Factory Method Pattern)

    问题: 在使用简单工厂模式的时候,如果添加新的产品类,则必需修改工厂类,违反了开闭原则. 定义: 定义一个用于创建对象的接口,让子类决定具体实例化哪个产品类.此时工厂和产品都具有相同的继承结构,抽象产 ...

  7. JavaScript焦点轮播图

    在慕课学习了JavaScript焦点轮播图特效,在此做一个整理. 首先是html结构,我用的是本地同文件夹下的三张图片,多出来的第一张(pic3副本)和最后一张图片(pic1副本)是为了实现无缝切换效 ...

  8. win10应用部署到手机出现问题Exception from HRESULT: 0x80073CFD

    今天把应用部署到手机上时,出现了这样的问题 Exception from HRESULT: 0x80073CFD 具体错误是: Error Error : DEP0001 : Unexpected E ...

  9. ASP.NET版CKEditor与CKFinder的配置使用

    ASP.NET版 CKEditor与CKFinder的配置使用 将CKEditor 与 CKFinder 的包含在项目中,并添加程序集的引用 从http://cksource.com网站上下载CKEd ...

  10. atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty  HttpListener

    atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty  HttpListener 1. 自定义web服务器的实现方案,基于原始socket vs   ...