Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
不懂了 为什么显示的是answer error 本地测试挺好的 sort方法自己实现的也是不行呀package learn_1000_1099; import java.util.*; public class Main_1009 { private static class Record { private int[][] data; private int pair; private int totalPoints; private int width; public Record(int[][] data, int pair, int totalPoints, int width) { this.data = data; this.pair = pair; this.width = width; this.totalPoints = totalPoints; } public void result() { int position = 0; List<int[]> tempOutput = new ArrayList<int[]>(); for (int i = 0; i < pair; ++i) { int row = position / width; int col = position % width; for (int r = row - 1; r <= row + 1; ++r) { for (int c = col - 1; c <= col + 1; ++c) { int tempPosition = r * width + c; if (tempPosition < 0 || tempPosition >= totalPoints) continue; int[] positionPair = new int[]{tempPosition, getMaxPixel(tempPosition)}; tempOutput.add(positionPair); } } position += data[i][1]; } tempOutput.sort(new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return o1[0] - o2[0]; } }); System.out.println(width); int index = 0; tempOutput.add(new int[]{totalPoints, -1}); for (int i = 0; i < tempOutput.size(); ++i) { if (tempOutput.get(index)[1] == tempOutput.get(i)[1]) { continue; } System.out.println(tempOutput.get(index)[1] + " " + (tempOutput.get(i)[0] - tempOutput.get(index)[0])); index = i; } System.out.println("0 0"); } private int getMaxPixel(int tempPosition) { int row = tempPosition / width; int col = tempPosition % width; int max = 0; int pixel = getPixelByPosition(tempPosition); for (int r = row - 1; r <= row + 1; ++r) { for (int c = col - 1; c <= col + 1; ++c) { int p = r * width + c; if (r < 0 || c < 0 || c >= width || p >= totalPoints || p == tempPosition || p < 0) { continue; } int impossibleMax = Math.abs((pixel - getPixelByPosition(p))); if (impossibleMax > max) { max = impossibleMax; } } } return max; } private int getPixelByPosition(int position) { int sum = 0; for (int i = 0; i < pair; ++i) { int nextSum = data[i][1] + sum; if (sum <= position && position < nextSum) { return data[i][0]; } sum = nextSum; } return 0; } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Record> list = new LinkedList<Record>(); int width; width = scanner.nextInt(); while (width != 0) { int[][] data = new int[1000][2]; int pair = 0; int totalPoints = 0; int pixel; int pixelNum; pixel = scanner.nextInt(); pixelNum = scanner.nextInt(); while (!(pixel == 0 && pixelNum == 0)) { data[pair][0] = pixel; data[pair][1] = pixelNum; ++pair; totalPoints += pixelNum; pixel = scanner.nextInt(); pixelNum = scanner.nextInt(); } list.add(new Record(data, pair, totalPoints, width)); width = scanner.nextInt(); } for (Record r : list) { r.result(); } System.out.print("0"); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator