• 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 许可协议。转载请注明出处!
  • 相关阅读:
    Mac OS terminal 查看内存使用情况的命令
    【教程】5分钟在以太坊上发行自己的代币
    Mac下eclipse的快捷键
    Mac上编辑文本的一些实用快捷键:跳转、选中等操作
    Mysql数据库用source命令导入SQL文件,利用navicat修改MySQL用户root密码,忘记mysql密码如何修改
    比特币1个确认和6个确认的区别在哪里?什么是双花问题?
    以 1、3、bc1 开头的比特币地址都有啥区别?转账手续费那种便宜,隔离见证地址为什么手续费便宜?
    以太坊 2.0 中的 DeFi:城市、郊区、农村
    Mac版navicat生成ER图把表结构导出pdf
    下载文件(API接口,Angularjs前端)
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/5793678.html
Copyright © 2020-2023  润新知