zoukankan      html  css  js  c++  java
  • TYVJ P1026 犁田机器人 Label:水

    背景

    USACO OCT 09 2ND

    描述

    Farmer John為了让自己从无穷无尽的犁田工作中解放出来,於是买了个新机器人帮助他犁田。这个机器人可以完成犁田的任务,可惜有一个小小的缺点:这个犁田机器人一次只能犁一个边的长度是整数的长方形的田地。

    因為FJ的田地有树和其他障碍物,所以FJ设定机器人去犁很多不同的长方形。这些长方形允许重叠。他给机器人下了P个指令,每个指令包含一个要犁长方形的地。这片田地由长方形的左下角和右上角坐标决定。他很好奇最后到底有多少个方格的地被犁过了。

    一般来说,田地被分割為很多小方格。这些方格的边和x轴或y轴平行。田地的宽度為X个方格,高度為Y个方格 (1 <= X <= 240; 1 <= Y <= 240). FJ执行了I (1 <= I <= 200)个指令,每个指令包含4个整数:Xll, Yll, Xur, Yur (1 <= Xll <=Xur; Xll <= Xur <=X; 1 <= Yll <= Yur; Yll <= Yur <= Y), 分别是要犁的长方形的左下角坐标和右上角坐标。机器人会犁所有的横坐标在Xll..Xur并且纵坐标Yll..Yur范围内的所有方格的地。可能这个长方形会比你想像的多一行一列(就是说从第Xll列到第Xur列一共有Xur - Xll + 1列而不是Xur - Xll列)。

    考虑一个6方格宽4方格高的田地。FJ进行了2个操作(如下),田地就被成"*"和"#"了。虽然一般被犁过的地看起来都是一样的。但是标成"#"可以更清晰地看出最近一次被犁的长方形。

        ......                 **....                  #####.
        ......  (1,1)(2,4) **....  (1,3)(5,4)  #####.
        ......                 **....                  **....
        ......                 **....                  **....

    一共14个方格的地被犁过了。

    输入格式

    * 第一行: 三个由空格隔开的整数: X, Y, I

    * 第二行到第I+1行:第i+1行有四个整数Xll, Yll, Xur, Yur,表示第i个指令。

    输出格式

    第一行: 一个单独的整数表示被犁过的方格数。

    测试样例1

    输入

    6 4 2 
    1 1 2 4 
    1 3 5 4

    输出

    14

    代码

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<algorithm>
     5 using namespace std;
     6 int X,Y,I,sum;
     7 int map[245][245];
     8 
     9 void fix(int x1,int y1,int x2,int y2){
    10     for(int i=x1;i<=x2;i++){
    11         for(int j=y1;j<=y2;j++){
    12             map[i][j]=1;
    13         }
    14     }
    15 }
    16 
    17 int main(){
    18 //  freopen("01.txt","r",stdin);
    19     scanf("%d%d%d",&X,&Y,&I);
    20     for(int i=1;i<=I;i++){
    21         int x1,x2,y1,y2;
    22         scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    23         fix(x1,y1,x2,y2);
    24     }
    25     for(int i=1;i<=X;i++){//检查x,y位置 
    26         for(int j=1;j<=Y;j++){
    27             if(map[i][j]) ++sum;
    28         }
    29     }
    30     printf("%d
    ",sum);
    31     
    32     return 0;
    33 }  

    None

    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 相关阅读:
    android 中文 api (43) —— Chronometer
    SVN客户端清除密码
    Android 中文 API (35) —— ImageSwitcher
    Android 中文API (46) —— SimpleAdapter
    Android 中文 API (28) —— CheckedTextView
    Android 中文 API (36) —— Toast
    Android 中文 API (29) —— CompoundButton
    android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
    Android 中文 API (30) —— CompoundButton.OnCheckedChangeListener
    Android 中文 API (24) —— MultiAutoCompleteTextView.CommaTokenizer
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/5793678.html
Copyright © 2011-2022 走看看