zoukankan      html  css  js  c++  java
  • [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];
    	}
    }
    
  • 相关阅读:
    遥远的国度(D12 树链剖分)
    Codechef DGCD Dynamic GCD(D12 树上GCD)
    html总结
    数据库大总结
    html笔记
    Linux常用快捷键
    进程
    多进程
    进程介绍
    网络并发
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/10982340.html
Copyright © 2011-2022 走看看