Java

Owll 发表于 1年前 · 关联问题 喜欢做题的 lre

题目:喜欢做题的 lre

思路:动态规划

  1. 考虑某一天,如果当天选ZOJ,那么当天所能得到的快乐值为前一天不选ZOJ的最大快乐值+z。POJ和CF同理。

代码如下:

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; public class Main { //快速输入 static BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //快速输出 static PrintWriter pw=new PrintWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { String[] s=br.readLine().split(" "); int t=Integer.parseInt(s[0]); for(;t>0;t--) { s=br.readLine().split(" "); int n=Integer.parseInt(s[0]); int[][] dp=new int[n+1][3]; for(int i=1;i<=n;i++) { s=br.readLine().split(" "); int z=Integer.parseInt(s[0]); int p=Integer.parseInt(s[1]); int c=Integer.parseInt(s[2]); dp[i][0]=Math.max(dp[i-1][1], dp[i-1][2])+z; dp[i][1]=Math.max(dp[i-1][0], dp[i-1][2])+p; dp[i][2]=Math.max(dp[i-1][0], dp[i-1][1])+c; } int ans=Math.max(dp[n][0], Math.max(dp[n][1], dp[n][2])); pw.println(ans); } pw.flush(); } }