zoukankan      html  css  js  c++  java
  • P1026 犁田机器人

    P1026 犁田机器人
    时间: 1000ms / 空间: 131072KiB / Java类名: Main

    背景

    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
     

    认真看题模拟一遍就好,其实就是每次犁点儿地然后标记一下,继而判断一下有第一次犁的地需要更新ans
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #define inf 1000000000
    using namespace std;
    int x,y,l;
    int x1,x2,y1,y2;
    bool f[225][225];
    int ans=0;
    int main()
    {
        scanf("%d%d%d",&x,&y,&l);
        for(int i=1;i<=l;i++)
        {
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
            for(int j=x1;j<=x2;j++)
            {
                for(int k=y1;k<=y2;k++)
                {
                    if(!f[j][k])
                    {
                        f[j][k]=1;
                        ans++;
                    }
                }
            }
        }
        cout<<ans;
        puts("");
        return 0;
    }
    嘤嘤嘤
     
  • 相关阅读:
    python调用函数实现数据的增删改查(1)
    VA Code编写html(1)
    python 跑服务器,访问自己制作的简单页面
    python调用函数实现数据的增删改查(2)
    VS Code编写html(2)
    python编写简单的html登陆页面(4)
    python编写简单的html登陆页面(1)
    虚拟机端口映射!
    VIM 主题管理
    Vim 窗口管理插件
  • 原文地址:https://www.cnblogs.com/gc812/p/5796305.html
Copyright © 2011-2022 走看看