[HDU1176]免费馅饼(DP)
Posted coding-gaga
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[HDU1176]免费馅饼(DP)相关的知识,希望对你有一定的参考价值。
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=1176
题解
DP。因为起点固定,终点随意,所以从终点到起点的顺序dp。
代码
import java.util.Scanner;
public class FreePie
static final int MAXT=100005;
static final int MAXLEN=10;
public static void main(String args[])
Scanner in=new Scanner(System.in);
while(in.hasNext())
int[][] pie=new int[MAXT][MAXLEN+1];
int n=in.nextInt();
if(n==0)
break;
int maxT=Integer.MIN_VALUE;
while(n--!=0)
int x=in.nextInt();
int t=in.nextInt();
++pie[t][x];
maxT=t>maxT?t:maxT;
int maxPie=maxPieCnt(pie,maxT);
System.out.println(maxPie);
in.close();
public static int maxPieCnt(int pie[][],int maxT)
int[][] dp=new int[maxT+1][MAXLEN+1];
for(int j=0;j<=MAXLEN;++j) //
dp[maxT][j]=pie[maxT][j];
for(int i=maxT-1;i>=0;--i) //
for(int j=0;j<=MAXLEN;++j)
if(j==0)
dp[i][j]=Math.max(dp[i+1][j], dp[i+1][j+1])+pie[i][j];
else if(j==MAXLEN)
dp[i][j]=Math.max(dp[i+1][j-1], dp[i+1][j])+pie[i][j];
else
dp[i][j]=Math.max(dp[i+1][j-1],Math.max(dp[i+1][j],dp[i+1][j+1]))+pie[i][j];
return dp[0][5];
以上是关于[HDU1176]免费馅饼(DP)的主要内容,如果未能解决你的问题,请参考以下文章