import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
// int b = in.nextInt();
int[] position=new int[a];
int[] raids=new int[a];
int[] value=new int[a];
for(int i=0;i<a;i++){
position[i]=in.nextInt();
}
for(int i=0;i<a;i++){
raids[i]=in.nextInt();
}
for(int i=0;i<a;i++){
value[i]=in.nextInt();
}
int res=subfunc(position,raids,value);
System.out.println(res);
}
}
//把value和radis做一个map, 通过某一个区间,直接可以获取value的值
// 种树
public static int subfunc(int[]position,int[] radis,int[] value ){
int len=position.length;
int[][] data=new int[len][2];
for(int i=0;i<len;i++){
data[i][0]=position[i]-radis[i];
data[i][1]=position[i]+radis[i];
// System.out.println(data[i][0]);
}
int temp=data[0][1];
for(int i=0;i<len;i++){
temp=Math.max(temp,data[i][1]);
}
//找出所有的不重叠区间
int maxvalue=0;
int[][] dp=new int[len+1][temp+1];
for(int i=0;i<=len;i++){
dp[i][0]=0;
}
for(int i=0;i<=temp;i++){
dp[0][i]=0;
}
int lastright=0;
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<len;i++){
map.put(position[i],value[i]);
}
// Arrays.sort(data, (e1, e2) -> (e1[0] - e2[0]));
Arrays.sort(data,(a,b)->(a[0]-b[0]));
for(int i=1;i<=len;i++){
// System.out.println(temp);
for(int j=1;j<=temp;j++){
if(data[i-1][0]<lastright){//这个不满足条件 不选
// System.out.println(i-1);
dp[i][j]=dp[i-1][j];
// int thlue=map.get((data[i-1][0]+data[i-1][1])/2);
// System.out.println(thlue);
}
else{
int thisvalue=map.get((data[i-1][0]+data[i-1][1])/2);
int thisradis=(data[i-1][1]-data[i-1][0])/2;
// System.out.println(thisvalue);
dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-thisradis]+thisvalue);
if(dp[i][j]==dp[i-1][j]+thisvalue){//选了
lastright=data[i-1][1];
// System.out.println(lastright);
}
// System.out.println(data[i-1][0]);
}
maxvalue=Math.max(maxvalue,dp[i][j]);
System.out.println(i);
System.out.println(j);
System.out.println(dp[i][j]);
}
}
return maxvalue;
}
}
HW数的最大价值
最新推荐文章于 2024-11-01 14:48:20 发布