import java.util.Scanner; /**  * @author cwz  * @date 2018-08-help2  */ public class help2 {     public static void main(String[] args){         final int OFFSET = 100000;         int[][] dp = new int[101][200001];         int[][] totalValue = new int[101][200001];         int[][] buf = new int[101][2];         Scanner sc = new Scanner(System.in);         int n = sc.nextInt();         for(int i=1; i<=n; i++){             int x = sc.nextInt();             int y = sc.nextInt();             buf[i][0] = x;             buf[i][1] = y;         }         for(int i=-100000; i<=100000; i++){             dp[0][i+OFFSET] = Integer.MIN_VALUE;             totalValue[0][i+OFFSET] = Integer.MIN_VALUE;         }         dp[0][0+OFFSET] = 0;         totalValue[0][0+OFFSET]=0;         for(int i=1;i<=n;i++){             for(int j=-100000; j<=100000; j++){                 int tmp1 = Integer.MIN_VALUE, tmp2 = Integer.MIN_VALUE;                 if(j+buf[i][0] <= 100000 && dp[i-1][j+buf[i][0]+OFFSET]!=Integer.MIN_VALUE){                     tmp1 = totalValue[i-1][j+buf[i][0]+OFFSET] + buf[i][1];                 }                 if(j-buf[i][0] >= -100000 && dp[i-1][j-buf[i][0]+OFFSET]!=Integer.MIN_VALUE){                     tmp2 = totalValue[i-1][j-buf[i][0]+OFFSET] + buf[i][1];                 }                 if(tmp1 < tmp2) tmp1 = tmp2;                 if(tmp1 < totalValue[i-1][j+OFFSET]) tmp1 = totalValue[i-1][j+OFFSET];                 totalValue[i][j+OFFSET] = tmp1;             }         }         System.out.println(totalValue[n][0+OFFSET]);     } }
点赞 评论

相关推荐

牛客网
牛客企业服务