动态规划——免费馅饼
来源:互联网 发布:淘宝 设计师 编辑:程序博客网 时间:2024/06/05 09:32
为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中其中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼)
提示:本题的输入数据量比较大,建议用scanf读入,用cin可能会超时。
65 14 16 17 27 28 30
4
水一水简单的dp。。。
思路:
dp[i][j]表示在i时刻j位置能接到馅饼的最大数,采用从后往前搜,最后输出dp[0][5]即可。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <queue>
#include <algorithm>
#include <vector>
#include <stack>
#define INF 0x3f3f3f3f
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int maxn=100005;
int dp[maxn][11];
int num[maxn][11];
int n;
int main()
{
while(~scanf("%d",&n)&&n)
{
memset(dp, 0, sizeof(dp));
memset(num, 0, sizeof(num));
int maxt=0;
for(int i=0; i<n; i++)
{
int t, pos;
scanf("%d%d", &pos, &t);
maxt=max(maxt, t);
num[t][pos]++; //注意同一时刻的同一位置可能掉多个馅饼
}
for(int i=maxt; i>=0; i--)
{
for(int j=0; j<=10; j++)
{
if(j==0)
{
dp[i][j]=max(dp[i][j], dp[i+1][j]);
dp[i][j]=max(dp[i][j], dp[i+1][j+1]);
}
else
if(j==10)
{
dp[i][j]=max(dp[i][j], dp[i+1][j-1]);
dp[i][j]=max(dp[i][j], dp[i+1][j]);
}
else
{
dp[i][j]=max(dp[i][j], dp[i+1][j-1]);
dp[i][j]=max(dp[i][j], dp[i+1][j]);
dp[i][j]=max(dp[i][j], dp[i+1][j+1]);
}
dp[i][j]+=num[i][j];
}
}
printf("%d\n", dp[0][5]);
}
return 0;
}
- 动态规划入门——免费馅饼
- 免费馅饼——动态规划
- 动态规划——hdu1176免费馅饼
- 动态规划——免费馅饼
- 动态规划 免费馅饼
- 动态规划-免费馅饼
- 动态规划--免费馅饼
- 动态规划--免费馅饼
- Hdu1176 - 免费馅饼 - 动态规划
- nyoj613 免费馅饼 动态规划
- hdu1176 免费馅饼 动态规划
- 免费馅饼(动态规划)
- 免费馅饼(简单动态规划)
- 动态规划:HDU1176-免费馅饼
- 【hdu1176】免费馅饼+动态规划
- HDU1176 免费馅饼 -- 动态规划
- 用广度搜索解动态规划题——HDOJ 1176 免费馅饼
- HDU 1176 免费馅饼 动态规划
- word
- JS 获取本地时间 并显示 (实时刷新)
- java中正则表示式验证
- Echarts可视化
- [乱搞]51 Nod 1421——最大MOD值
- 动态规划——免费馅饼
- css基础-对网页进行美化
- 在eclipse中搭建struts2框架的详细过程
- codeforces 812C Sagheer and Nubian Market
- Hibernate整理
- Python list tuple dict set map小总结
- 动态数组实现的Stack类(过渡版)
- sdnuoj1036感想
- python 利用pymssql连接sqlserver、查询、传参、插入新表案例