Color Me Less
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 15365 | Accepted: 7186 |
Description
A
color reduction is a mapping from a set of discrete colors to a smaller
one. The solution to this problem requires that you perform just such a
mapping in a standard twenty-four bit RGB color space. The input
consists of a target set of sixteen RGB color values, and a collection
of arbitrary RGB colors to be mapped to their closest color in the
target set. For our purposes, an RGB color is defined as an ordered
triple (R,G,B) where each value of the triple is an integer from 0 to
255. The distance between two colors is defined as the Euclidean
distance between two three-dimensional points. That is, given two
colors (R1,G1,B1) and (R2,G2,B2), their distance D is given by the
equation
Input
The
input is a list of RGB colors, one color per line, specified as three
integers from 0 to 255 delimited by a single space. The first sixteen
colors form the target set of colors to which the remaining colors will
be mapped. The input is terminated by a line containing three -1 values.
Output
For each color to be mapped, output the color and its nearest color from the target set.
If there are more than one color with the same smallest distance, please output the color given first in the color set.
If there are more than one color with the same smallest distance, please output the color given first in the color set.
Sample Input
0 0 0 255 255 255 0 0 1 1 1 1 128 0 0 0 128 0 128 128 0 0 0 128 126 168 9 35 86 34 133 41 193 128 0 128 0 128 128 128 128 128 255 0 0 0 1 0 0 0 0 255 255 255 253 254 255 77 79 134 81 218 0 -1 -1 -1
Sample Output
(0,0,0) maps to (0,0,0) (255,255,255) maps to (255,255,255) (253,254,255) maps to (255,255,255) (77,79,134) maps to (128,128,128) (81,218,0) maps to (126,168,9)
此题没有什么难点,注意比对最小欧式距离时的逻辑。
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); String[] str; int[][] target = new int[16][3]; int[] temp = new int[3]; int minIndex = 0; double minValue = -1; double tempValue = 0; for(int i = 0; i < 16; i++) { str = cin.nextLine().split(" "); target[i][0] = Integer.valueOf(str[0]).intValue(); target[i][1] = Integer.valueOf(str[1]).intValue(); target[i][2] = Integer.valueOf(str[2]).intValue(); } while(cin.hasNext()) { minIndex = 0; minValue = -1; tempValue = 0; str = cin.nextLine().split(" "); temp[0] = Integer.valueOf(str[0]).intValue(); temp[1] = Integer.valueOf(str[1]).intValue(); temp[2] = Integer.valueOf(str[2]).intValue(); if(temp[0]==-1 && temp[1]==-1 && temp[2]==-1) break; for(int i = 0; i < 16; i++) { tempValue = getEuclideanD(temp, target[i]); if(tempValue == 0) { minValue = tempValue; minIndex = i; break; } if(minValue == -1) { minValue = tempValue; minIndex = 0; continue; } if(minValue > tempValue) { minValue = tempValue; minIndex = i; } } System.out.println( "("+temp[0]+","+temp[1]+","+temp[2]+ ") maps to "+ "("+target[minIndex][0]+","+ target[minIndex][1]+","+ target[minIndex][2]+")"); } } private static double getEuclideanD(int[] p1, int[] p2) { double value = 0; value = Math.sqrt(Math.pow((p2[0]-p1[0]), 2) + Math.pow((p2[1]-p1[1]), 2) + Math.pow((p2[2]-p1[2]), 2)); return value; } }
发表评论
-
POJ ACM习题【No.2328】
2009-07-05 19:43 892Guessing Game Time ... -
POJ ACM习题【No.3157】
2009-04-26 23:54 1626Java vs C++ Time Lim ... -
POJ ACM习题【No.2924】
2009-04-26 11:52 915Gauß in Elementary School ... -
POJ ACM习题【No.3176】
2009-04-26 10:53 1038Cow Bowling Time Lim ... -
POJ ACM习题【No.3173】
2009-04-25 23:30 893Parkside's Triangle ... -
POJ ACM习题【No.2845】
2009-04-25 22:25 120501000001 Time Limit: ... -
POJ ACM习题【No.2140】
2009-04-25 21:26 929Herd Sums Time Limit ... -
POJ ACM习题【No.1969】
2009-04-25 20:59 851Count on Canton Time ... -
POJ ACM习题【No.2840】
2009-04-25 19:24 996Big Clock Time Limit ... -
POJ ACM习题【No.2521】
2009-04-24 22:41 839How much did the businessman l ... -
POJ ACM习题【No.1326】
2009-04-24 22:14 1001Mileage Bank Time Li ... -
POJ ACM习题【No.3325】
2009-04-24 21:15 1082ICPC Score Totalizer Software ... -
POJ ACM习题【No.2756】
2009-04-24 20:28 765Autumn is a Genius T ... -
POJ ACM习题【No.3062】
2009-04-24 20:10 800Celebrity jeopardy ... -
POJ ACM习题【No.1547】
2009-04-23 20:03 765Clay Bully Time Limi ... -
POJ ACM习题【No.1552】
2009-04-23 19:39 743Doubles Time Limit: ... -
POJ ACM习题【No.1007】
2009-04-23 19:24 843DNA Sorting Time Lim ... -
POJ ACM习题【No.1565】
2009-04-22 22:40 833Skew Binary Time Lim ... -
POJ ACM习题【No.2403】
2009-04-22 22:18 852Hay Points Time Limi ... -
POJ ACM习题【No.1862】
2009-04-22 20:12 692Stripies Time Limit: ...
相关推荐
方便大家有针对性地联系 祝大家AC愉快~
pojACM题目分类,便于各类型同学分别做题有所参考
相信大家在做poj上的题目的时候如果没有分类的话很迷茫吧....这里有一份目前比较全面的poj题目分类..
02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ...
acm数据结构总结.doc acm数据结构总结.doc
poj acm题解,包括绝大部分poj题目的题解,可以供acm爱好者学习研究
本文件是ACM里的一些题目的源码、原题和习题的分析及详细解答。欢迎各位下载
http://acm.pku.edu.cn/JudgeOnline/ acm的AC解题报告
POJ ACM 1015 Jury Compromise 两种解法 解题报告
西工大C语言POJ习题答案.docx
PKU 、POJ ACM/ICPC300多题的代码,还有各种典型问题的分类代码
poj 2007 Scrambled Polygon.md
poj 1984 Navigation Nightmare.md
poj 2900 Griddy Hobby.md
poj 2430 Lazy Cows.md
poj 3435 Sudoku Checker.md
poj 3183 Stump Removal.md
poj 2386 Lake Counting.md
poj 2201 Cartesian Tree.md
poj 3376 Finding Palindromes.md