ZOJ 1067 Color Me Less

本文提供了一个解决ColorMeLess问题的C++实现方案,并探讨了对于大量数据的有效处理方式,例如通过线段树等数据结构来降低查询的时间复杂度。

Color Me Less 

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1067

直接贴代码,但是值得思考的是数据量大的时候如何预处理数据使得查询的时间复杂度为1。(也许机器学习行。。。但需要依赖输入的数据)。

 1 //Problem Name: Color Me Less
 2 //Source: ZOJ 1067
 3 //Author: jinjin18
 4 //Main idea: FindMin
 5 //Language: C++
 6 //水题,数据量大如何处理?
 7 //是否可通过线段树类似的途径
 8 //确定每个颜色的区间
 9 #include<stdio.h>
10 
11 
12 
13 int main(){
14     int data[16][3];
15     int r,g,b;
16     for(int i = 0; i < 16; i++){
17         scanf("%d %d %d",&data[i][0],&data[i][1],&data[i][2]);
18     }
19     while(scanf("%d %d %d",&r,&g,&b)!=EOF&&(r!=-1||g!=-1||b!=-1)){
20         int mind = (r-data[0][0])*(r-data[0][0])+(g-data[0][1])*(g-data[0][1])+(b-data[0][2])*(b-data[0][2]);
21         int minp = 0;
22         for(int i = 1; i <16; i++){
23             if(mind > (r-data[i][0])*(r-data[i][0])+(g-data[i][1])*(g-data[i][1])+(b-data[i][2])*(b-data[i][2])){
24                 mind = (r-data[i][0])*(r-data[i][0])+(g-data[i][1])*(g-data[i][1])+(b-data[i][2])*(b-data[i][2]);
25                 minp = i;
26             }
27         }
28         printf("(%d,%d,%d) maps to (%d,%d,%d)\n",r,g,b,data[minp][0],data[minp][1],data[minp][2]);
29 
30     }
31 
32 
33 
34     return 0;
35 }

 

转载于:https://www.cnblogs.com/jinjin-2018/p/8963905.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值