1、算法提高编号: ADV-1题目: 两条直线 关键字:排序类型:普通试题问题描述:给定平面上 n 个点。求两条直线,这两条直线互相垂直,而且它们与 x 轴的夹角为 45 度,并且 n 个点中离这两条直线的曼哈顿距离的最大值最小。两点之间的曼哈顿距离定义为横坐标的差的绝对值与纵坐标的差的绝对值之和,一个点到两条直线的曼哈顿距离是指该点到两条直线上的所有点的曼哈顿距离中的最小值。输入格式第一行包含一个数 n。接下来 n 行,每行包含两个整数,表示 n 个点的坐标(横纵坐标的绝对值小于 109)。输出格式输出一个值,表示最小的最大曼哈顿距离的值,保留一位小数。样例输入41 00 12 11 2样例输出
2、1.0数据规模与约定对于 30%的数据,n 57) int mark = 1, temp = 0;if (i = 45) mark = -1;i = is.read();while (i 47 continue;int i2 = x + i + 1;int j2 = x + j + 1;int temp = mapij;temp += mapij2 * symbolix;temp += mapi2j * symbolxj;temp += mapi2j2 * symboli2x * symbolxj2;sum += Math.abs(temp);dpsymbolix + 1symbolxj +
3、1symbolxx + 1ij = Math.abs(temp);return sum;public static void main(String args) MyScanner sc = new MyScanner();int n = sc.nextInt();map = new intnn;symbol = new intnn;dp = new int333nn;for (int i = 0; i = 0; -count) int k = count;int center = (k k = 1;symbolxx = center;int sum = mapxx * center;for
4、(int j = 0; j 0 ? 1 : -1;symboljx = t;symbolx + j + 1x = t * center;sum += mapjx * t;sum += mapx + j + 1x * t * center;k = 1;for (int j = 0; j 6 ,在 6 号节点返回地球,花费能量为 1000。第二个机器人的行走路径为 1-2-3-2-4 ,在 4 号节点返回地球,花费能量为 1003。第一个机器人的行走路径为 1-2-5 ,在 5 号节点返回地球,花费能量为 1001。数据规模与约定本题有 10 个测试点。对于测试点 12 , n = 10 , k
5、= 5 。对于测试点 3 , n = 100000 , k = 1 。对于测试点 4 , n = 1000 , k = 2 。对于测试点 56 , n = 1000 , k = 10 。对于测试点 710 , n = 100000 , k = 10 。道路的能量 w 均为不超过 1000 的正整数。参考代码:import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;public class Main