HDU 1176 免费馅饼(数塔dp)

  一开始被吓到了,后来再仔细一读发现就是一个数塔,没有那么复杂

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
int dp[][];
int main()
{
int n;
while(~scanf("%d",&n))
{
int x,t,maxs = -;
if(n == ) break;
memset(dp,,sizeof(dp));
for(int i = ;i < n;i++)
{
scanf("%d%d",&x,&t);
dp[x][t]++;
if(t > maxs) maxs = t;
}
for(int i = maxs-;i >= ;i--)
{
for(int j = ;j <= ;j++)
{
if(j == )
dp[j][i] += max(dp[j][i+],dp[j+][i+]);
else if(j == ) dp[j][i] += max(dp[j-][i+],dp[j][i+]);
else dp[j][i] += max(dp[j+][i+],max(dp[j][i+],dp[j-][i+]));
}
}
printf("%d\n",dp[][]);
}
}
上一篇:USACO training course Number Triangles 数塔 /// DP oj10122


下一篇:Delphi 资源文件( .res)