地毯(暴力+差分两种方法)

这篇具有很好参考价值的文章主要介绍了地毯(暴力+差分两种方法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

在 nx n 的格子上有 m 个地毯。

给出这些地毯的信息,问每个点被多少个地毯覆盖。

输入格式

第一行,两个正整数 n,m。意义如题所述。

接下来 m 行,每行两个坐标 (x_1,y_1) 和 (x_2,y_2),代表一块地毯,左上角是 (x_1,y_1),右下角是 (x_2,y_2)。

输出格式

输出 n行,每行n 个正整数。

第 i 行第 j 列的正整数表示 (i,j) 这个格子被多少个地毯覆盖。

样例 #1

样例输入 #1
5 3
2 2 3 3
3 3 5 5
1 2 1 4

样例输出 #1
0 1 1 1 0
0 1 1 0 0
0 1 2 1 1
0 0 1 1 1
0 0 1 1 1

提示

样例解释

覆盖第一个地毯后:

地毯(暴力+差分两种方法),c++,c语言

覆盖第一、二个地毯后:

地毯(暴力+差分两种方法),c++,c语言

覆盖所有地毯后:

地毯(暴力+差分两种方法),c++,c语言

数据范围

对于 20% 的数据,有 n<= 50,m<= 100。

对于 100% 的数据,有 n,m<= 1000。

第一种方法:暴力做法。这道题的数据范围很小,所以暴力也可以过所有样例。

代码比较简单就不多讲了。文章来源地址https://www.toymoban.com/news/detail-653408.html

#include <iostream>
#include <algorithm>
using namespace std;

const int N = 100010;
int q[N][N]; // 定义一个二维数组来记录操作结果

int main()
{
    int n, m;
    cin >> n >> m; // 输入n和m,分别表示矩阵的大小和操作的次数
    
    // 进行m次操作
    for (int i = 0; i < m; i++)
    {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2; // 输入操作的左上角和右下角坐标
        
        // 针对操作的区域,进行累加操作
        for (int j = x1; j <= x2; j++)
        {
            for (int k = y1; k <= y2; k++)
            {
                q[j][k]++; // 将区域内的每个元素增加1
            }
        }
    }
    
    // 输出操作后的结果
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            cout << q[i][j] << " "; // 输出每个位置的操作结果
        }
        cout << endl;
    }
    
    return 0;
}
第二种方法:差分。
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1010;
int q[N][N]; // 定义一个二维数组来记录操作结果

int main()
{
    int n, m;
    cin >> n >> m; // 输入n和m,分别表示矩阵的大小和操作的次数
    
    // 进行m次操作
    for (int i = 0; i < m; i++)
    {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2; // 输入操作的左上角和右下角坐标
        
        // 更新操作
        for (int j = x1; j <= x2; j++)
        {
            q[j][y1]++;       // 在该列上加1
            q[j][y2 + 1]--;   // 在该列的下一行减1,用于区分操作的范围
        }
    }
    
    // 根据更新操作,计算每个位置的最终值
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            q[i][j] += q[i][j - 1]; // 当前位置的值等于前一列的值加上当前位置的值
            cout << q[i][j] << " "; // 输出每个位置的最终结果
        }
        cout << endl;
    }
    
    return 0;
}

到了这里,关于地毯(暴力+差分两种方法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单端与差分的接线方法

    本文想要说明单端和差分信号的接线方法。当然我们先要介绍一下单端和差分信号,然后在说明其接线方法。 一、单端及差分信号 单端信号是指输入信号由一个参考端和一个信号端构成,这个参考端一般就是地端。信号是通过计算信号端和地端的差值得到的。 差分信号则是

    2024年02月05日
    浏览(50)
  • 常用的统计建模方法——差分分析

    差分,本质上就是下一个数值减去上一个数值,主要是消除一些波动使数据趋于平稳,非平稳序列可通过差分变换转化为平稳序列。 输入: 1个时间序列数据定量变量 输出: 经过指定阶数差分后的序列图 SPSSPRO-免费专业的在线数据分析平台 案例: 基于某杂志1995-2019年的印

    2023年04月08日
    浏览(33)
  • 防止暴力破解ssh的四种方法

    防止暴力破解的四种方法: 1 密码要写的足够的复杂,通常建议将密码写16位,并且无连贯的数字或者字母;当然也可以固定一个时间修改一次密码,推荐是一个月修改一次会稳妥一些 2 修改ssh的端口号,给对方一些迷惑性,因为远程linux服务器默认端口是22,修改成其他的端

    2024年02月03日
    浏览(48)
  • 【洛谷 P1003】[NOIP2011 提高组] 铺地毯 题解(数组+贪心算法)

    为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n n n 张地毯,编号从 1 1 1 到 n n n 。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上

    2023年04月24日
    浏览(48)
  • 强化学习系列--时序差分学习方法(SARSA算法)

    SARSA(State-Action-Reward-State-Action)是一种强化学习算法,用于解决马尔可夫决策过程(MDP)中的问题。 SARSA算法属于基于值的强化学习算法 ,用于学习最优策略。 在SARSA算法中,智能体通过与环境进行交互来学习。它基于 当前状态、选择的动作、获得的奖励、下一个状态和下

    2024年02月11日
    浏览(36)
  • Allegro如何快速查看差分对是否等长的方法

    在用Allegro进行PCB设计时,用快速查看差分对是否等长的方法,可以提高效率。 那如何操作呢?具体操作方法如下: (1)选择菜单栏Route 选择Timing Vision(时序视图) 然后在Options选项卡Timing Mode选择DRC Phase Find选项卡选择Nets 然后框选整板的网络,这时差分对网络太长或太短的

    2024年02月04日
    浏览(67)
  • 二维前缀和&二维差分(超详细,python版,其他语言也很轻松能看懂)

    上一篇文章讲解了一维前缀和一维差分,本篇进阶为二维。 二维前缀和跟一维前缀和求法相同,这里直接上例子。 数组a = [[1,2,2,1],[3,2,2,1],[1,1,1,1]] a数组如图: 则数组a的前缀和为:数组b[[1,3,5,6],[4,8,12,14],[5,10,15,18]] b数组如图: 前缀和递推公式为 b[i][j] = b[i - 1][j] + b[i][j - 1]

    2024年04月22日
    浏览(38)
  • 强化学习9——免模型预测算法介绍(蒙特卡洛方法和时步差分方法)

    对于大部分情况来说,环境是未知的,也就是说状态转移概率未知,对于这种情况的算法称为 免模型预测 算法。免模型算法与环境不断交互学习,但是需要大量的运算。 蒙特卡罗方法通过重复随机抽选,之后运用统计概率此方法来从抽样结果中归纳我们想要得到的数值估计

    2024年02月02日
    浏览(44)
  • 随机游走任务中时间差分(0)和常数α蒙特卡罗方法的比较

            在这篇文章中,我们讨论了常α MC 方法和 TD(0) 方法之间的区别,并比较了它们在随机游走任务中的性能。TD方法在本文的所有测试中都覆盖了MC方法,因此将TD视为强化学习任务的方法是更可取的选择。         蒙特卡洛(MC)和时间差分(TD)方法都是强化

    2024年02月10日
    浏览(39)
  • 【ARIMA-LSTM】合差分自回归移动平均方法-长短期记忆神经网络研究(Python代码实现)

      💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 1.1 ARIMA模型 1.2 LSTM 模型 📚2 运行结果 🎉3 参考文献

    2024年02月10日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包