携程第二场预赛 1003:位图像素的颜色(水题,判断点是否在矩形内)

位图像素的颜色

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 4   Accepted Submission(s) : 4

Font: Times New Roman | Verdana | Georgia

Font Size:  

Problem Description

有一个在位图上画出矩形程序,一开始位图都被初始化为白色(RGB颜色表示为R=G=B=255)。该程序能够按照顺序绘出N个矩形。新绘制的矩形能够覆盖位图上原有的颜色。程序执行完毕后,需要查询M个点的颜色,输出这些点的RGB值。

每组数据都是在初始化后开始绘制。

Input

第一行包含参数N和M,分别表示矩形个数和需要查询的像素个数(1 ≤N, M≤ 1000 );
剩下N行每行包含7个参数x1, y1, x2, y2, r, g, b,表示绘制一个(x1,y1),(x2,y2)为顶点的矩形,填充颜色为RGB(r, g, b),其中x1≤x2, y1≤y2数据在整型范围;0≤ r,g,b ≤ 255;
最后M行分别包含参数X和Y,表示需要查询的像素位置。
如果某行N=M=0就表示输入结束。

Output

对于每个用例,按行输出查询的像素的RGB值,每行包含3个整数,分别表示RGB值。

Sample Input

1 2
0 0 2 3 127 196 200 
1 2
3 0
2 3
8 16 32 64 0 255 128 
8 48 32 64 255 0 0 
12 47
13 48
14 64
0 0

Sample Output

127 196 200
255 255 255
0 255 128
255 0 0
255 0 0

Source

CodingTrip - 携程编程大赛 (预赛第二场)
 
  水题,稍微沾了一点计算几何的边
  这道题用20分钟就能做出来,我却做了30分钟,一开始觉得要用到判断点是否在多边形内,所以直接套上了一个大模板,后来发现根本不用那么复杂,判断点是否在矩形内直接判断点的上界下界是否超出就行了。
  比赛就要看手速啊!早知道这道题这么简单怎么说也能杀入决赛了!
  代码
 1 #include <iostream>
 2 using namespace std;
 3 struct Point{
 4     double x,y;
 5 };
 6 struct Plg{
 7     Point p1,p2;
 8     int r,g,b;
 9 };
10 int main()
11 {
12     int n,m;
13     while(scanf("%d%d",&n,&m)!=EOF){
14         if(n==0 && m==0) break;
15         Plg pl[1010];    //多边形
16         int i,j;
17         for(i=1;i<=n;i++)    //输入多边形及颜色
18             scanf("%lf%lf%lf%lf%d%d%d",&pl[i].p1.x,&pl[i].p1.y,&pl[i].p2.x,&pl[i].p2.y,&pl[i].r,&pl[i].g,&pl[i].b);
19         for(i=1;i<=m;i++){
20             Point t;
21             scanf("%lf%lf",&t.x,&t.y);
22             int r=255,b=255,g=255;
23             for(j=1;j<=n;j++){
24                 if(pl[j].p1.x<=t.x && t.x<=pl[j].p2.x && 
25                    pl[j].p1.y<=t.y && t.y<=pl[j].p2.y){    //在多边形内,刷新颜色
26                     r = pl[j].r;
27                     b = pl[j].b;
28                     g = pl[j].g;
29                 }
30             }
31             printf("%d %d %d
",r,g,b);
32         }
33     }
34     return 0;
35 }

Freecode : www.cnblogs.com/yym2013

原文地址:https://www.cnblogs.com/yym2013/p/3660118.html