• 洛谷 P2692 覆盖


    题目背景

    WSR的学校有B个男生和G个女生都来到一个巨大的操场上扫地。

    题目描述

    操场可以看成是N 行M 列的方格矩阵,如下图(1)是一个4 行5 列的方格矩阵。每个男生负责打扫一些连续的行,每个女生负责打扫一些连续的列。比如有两个男生,第一个男生负责第1、2 两行、第二个男生负责第4 行,如图(2)的蓝色。打扫的区域可能重复,比如,又有两个女生,第一个女生负责打扫第3、4 两列,第二个女生负责打扫第4、5 两列,如图(3)的红色。从图(3)可以容易看出,有颜色覆盖的方格数为18,即这4 名学生总共打扫了18 个方格。

    老师要WSR在学校给出打扫安排的数据后快速计算出这些学生总共打扫了多少方格?

    输入输出格式

    输入格式:

     

    第一行4 个正整数:N,M,B,G,N 表示方阵行数,M 表示方阵列数,B 表示男生数,G 表示女生数。

    接下来B 行,每行两个整数x y。表示相应某个男生负责打扫从第x 行到第y行(共y-x+1 行),保证1≤x≤y≤N。

    再接下来G 行,每行两个整数x y。表示相应某个女生负责打扫从第x 列到第y 列(共y-x+1 列),保证1≤x≤y≤M。

     

    输出格式:

     

    一个整数,表示所打扫的面积。(即格子的总数)

     

    输入输出样例

    输入样例#1: 复制
    4 5 2 2
    1 2
    4 4
    3 4
    4 5
    输出样例#1: 复制
    18

    说明

    不会可以自己画图。

    数据范围:

    8 个的数据:N,M,B,G 的范围都是[1…100]

    2 个的数据:N,M,B,G 的范围都是[1…5,000]

    思路:模拟

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,m,b,g;
    int x,y,ans;
    int map[5010][5010];
    int vis1[5010],vis2[5010];
    int main(){
        scanf("%d%d%d%d",&n,&m,&b,&g);
        for(int i=1;i<=b;i++){
            scanf("%d%d",&x,&y);
            for(int j=x;j<=y;j++)    vis1[j]=1;
        }
        for(int i=1;i<=g;i++){
            scanf("%d%d",&x,&y);
            for(int j=x;j<=y;j++)    vis2[j]=1;
        }
        for(int i=1;i<=n;i++){
            if(!vis1[i])
                for(int j=1;j<=m;j++)
                    if(!vis2[j])    ans++;
        }
        cout<<n*m-ans;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    编写第一个MapReduce程序—— 统计气温
    Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
    Linux环境安装Eclipse及配置hadoop插件
    Hadoop的核心组件和生态圈
    安装hadoop集群服务器(hadoop1.2.1)
    python入门到精通[三]:基础学习(2)
    python入门到精通[二]:基础学习(1)
    com.mysql.jdbc.Driver 与 org.gjt.mm.mysql.Driver的区别
    Intellij IDEA中修改Maven项目的项目名称
    对CountDownLatch的初步学习
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7892281.html
Copyright © 2020-2023  润新知