Color Me Less (poj 1046) (sdut 1047)水题
2014-11-19 12:50
295 查看
Color Me Less
Time Limit: 1000ms Memory limit: 32765K 有疑问?点这里^_^
题目描述
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 colorvalues, 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.
![](http://acm.sdut.edu.cn/image/1047.gif)
输入
The input file 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 bya line containing three -1 values.
输出
For each color to be mapped, output the color and its nearest color from the target set.
示例输入
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
示例输出
(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)
题意:先输入16个点,然后再输入若干个点,在前边的16个点中找到与其距离最小的点
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> using namespace std; struct node { int r,g,b; }col[16],q; int main() { int i,j,k; double d,D; int r1,g1,b1; for(i=0;i<16;i++) cin>>col[i].r>>col[i].g>>col[i].b; while(cin>>q.r>>q.g>>q.b) { if(q.r==-1&&q.g==-1&&q.b==-1) break;//输入为三个-1时结束 else { d=500; for(i=0;i<16;i++) { r1= (q.r-col[i].r)*(q.r-col[i].r); g1=(q.g-col[i].g)*(q.g-col[i].g); b1=(q.b-col[i].b)*(q.b-col[i].b); D=sqrt(r1+g1+b1);//求两点间的距离 if(D<d) { d=D; j=i; } } cout<<"("<<q.r<<","<<q.g<<","<<q.b<<")" <<" maps to "; cout<<"("<<col[j].r<<","<<col[j].g<<","<<col[j].b<<")" <<endl; } } return 0; }
相关文章推荐
- POJ 1046 Color Me Less(水题)
- POJ 1046 Color Me Less(我的水题之路——坐标最小点)
- poj 1046 Color Me Less(水题)
- POJ1046 Color Me Less(水题就当玩吧)
- POJ 2871 A Simple Question of Chemistry(水题)
- poj 1047 Round and Round We Go
- Who's in the Middle - POJ 2388 水题
- (Relax 水题1.2)POJ 1032 Parliament(将n分解成若干个互不相等的整数的和,并且是这些整数的乘积最大)
- Counterfeit Dollar - POJ 1003 水题
- POJ 2471 || SDUT 2357 Bullshit Bingo(字符串处理)
- POJ 2007 Scrambled Polygon 凸包加排序 水题一道
- poj 1046 Color Me Less
- POJ 1837(Dp水题)
- POJ - 2029 Get Many Persimmon Trees(暴力水题)
- POJ 1047 没什么难度,注意读懂题。
- poj_1163&&SDUT 1730 The Triangle
- POJ-1979(搜索水题)
- poj 1046
- 最长上升子序列nlogn算法(poj 2533 && SDUT 1299)
- poj--3624--Charm Bracelet(动态规划 水题)