可以改进 有时间改进
package com.bluecup.org;
import java.util.Scanner;
public class Min_DeleteNote {
/**
* @param args
*/
static int f[][][]=new int[20][20][2];
static int t[][]=new int[20][2];
static int m[][]=new int[20][20];
static int n;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
n=scan.nextInt();
for(int i=0;i<n;i++)
{
int start=scan.nextInt();
int time=scan.nextInt();
t[i][0]=start;
t[i][1]=time;
}
f[0][0][0]=f[0][0][1]=t[0][1];
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
getMaxAndMin(i,j);
f[i][j][0]=max;
f[i][j][1]=min;
//System.out.println(max+" "+min);
}
}
m[0][0]=t[0][0]+t[0][1];
// System.out.println(f[0][n-1][1]+" "+f[0][n-1][0]);
for(int i=1;i<n;i++)
{
m[0][i]=t[i][0]+f[0][i][1]+f[0][i][0];
int p=0;
if(i!=1)
{
p=m[0][i-1];
if(p>t[i][0])
p=p+t[i][1];
else p=t[i][0]+t[i][1];
}
else
{
if(m[0][0]>t[1][0])
p=m[0][0]+t[1][1];
else p=t[1][0]+t[1][1];
}
m[0][i]=m[0][i]<p?m[0][i]:p;
// System.out.println(m[0][i]);
for(int j=1;j<i;j++)
{
p=0;
p=m[0][j-1];
if(p>t[i][0])
p=p+f[j][i][0]+f[j][i][1];
else p=t[i][0]+f[j][i][0]+f[j][i][1];
m[0][i]=m[0][i]<p?m[0][i]:p;
}
}
for(int i=0;i<n;i++)
System.out.println(m[0][i]);
}
static int max;
static int min;
static void getMaxAndMin(int i,int j)
{
int m,n;
m=n=t[i][1];
i++;
for(;i<=j;i++)
{
if(m<t[i][1])
m=t[i][1];
if(n>t[i][1])
n=t[i][1];
}
max=m;
min=n;
}
}