首页 > 其他分享 >洛谷题单指南-数学基础问题-P3913 车的攻击

洛谷题单指南-数学基础问题-P3913 车的攻击

时间:2024-04-09 12:55:05浏览次数:28  
标签:指南 map 10 int 洛谷题 复杂度 long P3913 unordered

原题链接:https://www.luogu.com.cn/problem/P3913

题意解读:车所在的行、列一共有多个个格子。

解题思路:

假设3*3的棋盘,有三个车

分析得知,三个车覆盖了第1、2两行,第2、3两列,覆盖的格子数用公式计算就是2 * 3 + 2 * 3 - 2 * 2 = 8

也就是两行格子数加两列格子数再减去交叉点。

因此,本题关键就是要统计一共有多少个不同的行R,多少个不同的列C,根据公司R*n+C*n-R*C即可得解。

由于n最大是10^9,用数组hash来去重不可取,可以用map来操作

80分代码:

#include <bits/stdc++.h>
using namespace std;

map<int, int> row, col;
int n, k, r, c;

int main()
{
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= k; i++)
    {
        scanf("%d%d", &r, &c);
        row[r]++;
        col[c]++;
    }
    cout << row.size() * n + col.size() * n - row.size() * col.size();
    return 0;
}

由于map在查找和插入时复杂度都是O(logN),因此上面代码复杂度为O(k*2logk),k最大10^6,复杂度约6*10^7,在加上map本身插入数据时还有logn的消耗,复杂度将超过6*10^7。

如果熟悉unordered_map,它在插入和查找的复杂度是O(1),替换map即可。

100分代码(unordered_map):

#include <bits/stdc++.h>
using namespace std;

unordered_map<int, int> row, col;
int n, k, r, c;

int main()
{
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= k; i++)
    {
        scanf("%d%d", &r, &c);
        row[r]++;
        col[c]++;
    }
    cout << row.size() * n + col.size() * n - row.size() * col.size();
    return 0;
}

如果不熟悉unordered_map,可以用两个vector把所有行、列存下来,进行去重,即可得一共覆盖了多少行、多少列。

要注意结果可能超int。

100分代码(排序去重):

#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 5;

int row[N];
int col[N];
int n, k, r, c;

int main()
{
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= k; i++)
    {
        scanf("%d%d", &r, &c);
        row[i] = r;
        col[i] = c;
    }
    sort(row + 1, row + k + 1); //对所有行排序
    sort(col + 1, col + k + 1); //对所有列排序
    long long R = 1, C = 1; //行、列数组的下标,用于去重
    for(int i = 2; i <= k; i++)
    {
        if(row[i] != row[i - 1]) //对行数组去重
            row[++R] = row[i];
        if(col[i] != col[i - 1]) //对列数组去重
            col[++C] = col[i];
    }
    cout << R * n + C * n - R * C;
    return 0;
}

为什么用unordered_map的方法不需要定义long long呢,因为size()返回的类型是size_t,会根据机器自动适配,32位机器是int,64位机器就是long long。 

标签:指南,map,10,int,洛谷题,复杂度,long,P3913,unordered
From: https://www.cnblogs.com/jcwy/p/18123737

相关文章

  • Stable diffusion 初学者指南
    1.Stablediffusion初学者指南想掌握StableDiffusionAI技术吗?这份初学者指南专为完全没接触过StableDiffusion或任何AI图像生成器的新手设计。跟随本指南,你将了解StableDiffusion的基本情况,并获得一些实用的入门技巧。什么是Stablediffusion?StableDiffusionAI是一种......
  • 「Java开发指南」如何利用MyEclipse启用Spring DSL?(一)
    本教程将引导您通过启用SpringDSL和使用ServiceSpringDSL抽象来引导Spring和Spring代码生成项目,本教程中学习的技能也可以很容易地应用于其他抽象。在本教程中,您将学习如何:为SpringDSL初始化一个项目创建一个模型包创建一个服务和操作实现一个服务方法启用JAX-WS和DWR......
  • XML文档节点导航与选择指南
    XPath(XMLPathLanguage)是XSLT标准的主要组成部分。它用于在XML文档中浏览元素和属性,提供了一种强大的定位和选择节点的方式。XPath的基本特点代表XML路径语言:XPath是一种用于在XML文档中导航和选择节点的语言。路径样式语法:XPath使用路径表达式的“路径样式”语法来......
  • 实践指南:EdgeOne与HAI的梦幻联动
    在当今快速发展的数字时代,安全和速度已成为网络服务的基石。EdgeOne,作为腾讯云提供的边缘安全加速平台,以其全球部署的节点和强大的安全防护功能,为用户提供了稳定而高效的网络体验。而HAI(HyperApplicationInventor),腾讯云推出的高性能应用服务,通过其易用的图形化界面和丰富的模型库,......
  • 洛谷题单指南-数学基础问题-P2789 直线交点数
    原题链接:https://www.luogu.com.cn/problem/P2789题意解读:n条直线可以形成不同交点数的方案数。解题思路:对于n=1、2、3、4的情况进行模拟:n=1时,有1种不同的交点数n=2时,有2种不同的交点数n=3时,有3种不同的交点数n=4时,有5种不同的交点数对n=4的情况,分情况讨......
  • Kafka、ActiveMQ、RabbitMQ、RocketMQ四大消息队列优劣对比与选择指南
    在分布式系统架构中,消息队列(MessageQueue,MQ)扮演着至关重要的角色,它作为异步通信的核心组件,能够实现系统解耦、削峰填谷、数据缓冲等功能。本文将聚焦于四大主流消息队列——Kafka、ActiveMQ、RabbitMQ、RocketMQ,深度剖析它们各自的优缺点,并在最后提供一份详尽的选择指南,以助......
  • 音效白嫖指南:打造专业级作品不花一分钱
    在视频制作和音频编辑的过程中,音效的运用往往能够给作品带来丰富的层次感和沉浸式的体验。然而,对于一些初学者或预算有限的创作者来说,购买专业的音效库可能会成为一项不小的负担。幸运的是,互联网上存在着许多免费的音效网站,只要我们善加利用,就能够打造出专业级的作品而不花一分......
  • 如何使用Git和GitHub - 初学者和有经验开发者的指南
    欢迎来到初学者的Git和GitHub!这份综合指南旨在帮助您探索版本控制和协作的世界。无论您是刚开始的新手还是经验丰富的开发者想要提升技能,这个指南都提供了逐步的方法来理解和有效使用Git和GitHub。通过本次旅程,您将建立起对Git和GitHub的坚实基础。您将具备实用知识,以简化您的编......
  • 调剂指南,想知道的这里都有
    目录1、选几个备选学校。(1)为什么(2)怎么选2、准备复试调剂系统开了之后,就可以挑选学校了,这里分享自己的一点经验。1、选几个备选学校。(1)为什么       调剂的平行志愿可以填三个,所以一次最多可以选三个学校(如果平行志愿中某个被该学校拒绝了,可以重新选其他)。所以如......
  • XML文档节点导航与选择指南 | XPath基础知识
    XPath(XMLPathLanguage)是XSLT标准的主要组成部分。它用于在XML文档中浏览元素和属性,提供了一种强大的定位和选择节点的方式。XPath的基本特点代表XML路径语言:XPath是一种用于在XML文档中导航和选择节点的语言。路径样式语法:XPath使用路径表达式的“路径样式”语......