• CodingTrip


    位图像素的颜色

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

    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


    我们可以把n个矩形先存起来,因为后面的涂色会把前面的覆盖掉,所以对于n次询问,我只要找到最后一个包含这个点的矩形,并把它的像素输出就可以了。因为n和m的范围都是不超过1000的,所以n*m不会超时。
     1 /*
     2 ID: asif
     3 LANG: C++
     4 TASK: test
     5 */
     6 //# pragma comment(linker, "/STACK:102400000,102400000")
     7 # include<iostream>
     8 # include<cstdio>
     9 # include<cstdlib>
    10 # include<cstring>
    11 # include<algorithm>
    12 # include<cctype>
    13 # include<cmath>
    14 # include<string>
    15 # include<set>
    16 # include<map>
    17 # include<stack>
    18 # include<queue>
    19 # include<vector>
    20 # include<numeric>
    21 using namespace std;
    22 const int maxn=1011;
    23 const double inf=0.000001;
    24 const int INF=~0U>>1;
    25 const int mod=1000000007;
    26 # define PI (acos(0)*2.0)
    27 # define lson l,m,rt<<1
    28 # define rson m+1,r,rt<<1 | 1
    29 # define PS printf("
    ")
    30 # define S(n) scanf("%d",&n)
    31 # define P(n) printf("%d
    ",n)
    32 # define Ps(n) printf(" %d",(n))
    33 # define SB(n) scanf("%lld",&n)
    34 # define PB(n) printf("%lld
    ",n)
    35 # define PBs(n) printf(" %lld",n)
    36 # define SD(n) scanf("%lf",&n)
    37 # define PD(n) printf("%.3lf
    ",n)
    38 # define Sstr(s) scanf("%s",s)
    39 # define Pstr(s) printf("%s
    ",s)
    40 # define S0(a) memset(a,0,sizeof(a))
    41 # define S1(a) memset(a,-1,sizeof(a))
    42 typedef long long ll;
    43 int n,m;
    44 struct node
    45 {
    46     int x1;
    47     int y1;
    48     int x2;
    49     int y2;
    50     int r;
    51     int g;
    52     int b;
    53 };
    54 node point[maxn];
    55 int equal(double x,double y)
    56 {
    57     if(x-y>=-inf&&x-y<=inf)
    58         return 0;
    59     else if(x-y>inf)
    60         return 1;
    61     return -1;
    62 }
    63 int main()
    64 {
    65     //freopen("input.in", "r", stdin);
    66     //freopen("output.out", "w", stdout);
    67     while(cin>>n>>m,n||m)
    68     {
    69         for(int i=0;i<n;i++)
    70             scanf("%d%d%d%d%d%d%d",&point[i].x1,&point[i].y1,&point[i].x2,&point[i].y2,&point[i].r,&point[i].g,&point[i].b);
    71         for(int i=0;i<m;i++)
    72         {
    73             int x,y;
    74             S(x),S(y);
    75             int r=255,g=255,b=255;
    76             for(int j=0;j<n;j++)
    77             {
    78                 if(x>=point[j].x1&&x<=point[j].x2&&y>=point[j].y1&&y<=point[j].y2)
    79                 {
    80                     r=point[j].r;
    81                     g=point[j].g;
    82                     b=point[j].b;
    83                 }
    84             }
    85             printf("%d %d %d
    ",r,g,b);
    86         }
    87     }
    88     return 0;
    89 }
    View Code
  • 相关阅读:
    【CITE】C# 如何 实现一个窗体和另一个窗体始终保持相对的位置
    【CITE】5个最优秀的Java和C#代码转换工具
    【EasyX】RGB to Gray
    【Problem solved】发现输入法都是仅桌面使用,无法输入中文时
    【Problem solved】 error C2665: “loadimage”: 2 个重载中没有一个可以转换所有参数类型
    Software Engineering Training in 2016 summer: snake
    hello world!
    数组名和指针
    取得一个给定的地址所存放的值,将给定值存放在给定地址
    搭建hadoop集群 单机版
  • 原文地址:https://www.cnblogs.com/asif/p/3659999.html
Copyright © 2020-2023  润新知