• 携程第二场预赛 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

  • 相关阅读:
    asp.net中的窗体身份验证(不同的角色访问不同的目录)
    asp.net中的窗体身份验证(完整篇之六:登出后不能通过后退回来面来的页面)
    asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)
    asp.net中的窗体身份验证(完整篇之四:获得用户数据)
    asp.net中的窗体身份验证(完整篇之五:退出登录)
    [iphone]UIImage,CGImage和CGImageRef有什么区别
    glVertexAttribPointer
    在OpenGL中使用着色器的步骤
    glViewport()函数和glOrtho()函数的理解
    OpenGL ES 三种类型修饰 uniform attribute varying
  • 原文地址:https://www.cnblogs.com/yym2013/p/3660118.html
Copyright © 2020-2023  润新知