PAT1149 Dangerous Goods Packaging

2023-10-27 18:20

本文主要是介绍PAT1149 Dangerous Goods Packaging,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PAT1149

  • 原题
  • 题目大意及思路
  • 代码
  • 运行截图
  • 收获

原题

在这里插入图片描述

题目大意及思路

不相容的物品放在同一个容器中会引起爆炸。
输入数据中给了两个模块:
第一块是不相容物品对
第二块是m个inquiries,若其中不存在不相容物品对则输出yes,否则输出no

首先对于不相容物品对信息的存储,我们不选取邻接矩阵,因为题中每一个物品的编号都是一个五位数,若想全部存储的话,需要一个100000*100000的矩阵,这个会太大造成报错。同样地,我们也不选取邻接表,因为所用的存储空间也比较浪费,所以在这里我们选取map与vector的复合结构:map<int,vector<int>> mv;这样能够在给出的不兼容物品对不多的情况下减少内存浪费。
另外一个比较重要的点在于每次容器内物品的检查,刚开始我采用的是vector存储一个容器里的物品编号,用map<int,set<int>> ms 中find()函数来查看是否有对应元素,但find()函数的时间复杂度比较高,所以后几个测试样例没有通过。
在参考其他大神的代码后,他们采用a[100000]来存储每一个inquiry中现存的编号,在遍历该编号的邻接矩阵时就不需要用find函数而是用一个时间复杂度为a[mv[data[i]][j]]的判断语句来代替。

代码

#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
map<int,vector<int>> mv;
int main(){int n,m;cin>>n>>m;while(n--){int i,j;cin>>i>>j;mv[i].push_back(j);mv[j].push_back(i);}while(m--){int k;cin>>k;int a[100000]={0};bool flag=true;vector<int> data(k);for(int i=0;i<k;i++){cin>>data[i];a[data[i]]=1;}for(int i=0;i<k;i++){if(flag==false) break; for(int j=0;j<mv[data[i]].size();j++){if(a[mv[data[i]][j]]) flag=false;}}printf("%s\n",flag==true?"Yes":"No");}
}

运行截图

在这里插入图片描述

收获

stl库中的函数固然简易好用,但要算上它们的时间复杂度,考虑是否有其他时间复杂度更低的语句来代替。

这篇关于PAT1149 Dangerous Goods Packaging的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287517

相关文章

【论文阅读第一期】Goods:Organizing Google’s Datasets总结

论文阅读第一期的文章《Goods:Organizing Google’s Datasets》讲的是关于谷歌在海量元数据管理方面的实践。本篇总结主要从3个方面进行展开:1.什么是元数据;2.如何管理元数据;3.启发与总结 1.什么是元数据 元数据被称之为描述数据的数据,记录的是文件的特征,包括数据属性、拥有者、权限、数据块等信息。无论是mysql、oracle这样的关系型数据库,还是Hive、H

解决linux下安装apex库报错:ModuleNotFoundError: No module named ‘packaging‘

使用如下命令安装apex: git clone https://github.com/NVIDIA/apexcd apexpip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./ 报错: Running comm

ImportError: cannot import name ‘packaging‘ from ‘pkg_resources‘

首先看一下setuptools是否为70.0.0版本: pip list | grep setuptools 如果是则降低版本: python -m pip install setuptools==69.5.1 参考:https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/15863

springboot pom文件设置<packaging>pom</packaging> 对于application.yml无法加载读取的问题

一.问题描述 1.1 描述 1.一个jpa的项目,不知道怎么创建的项目时,反正pom文件中有打包方式为<packaging>pom</packaging>, 启动项目无法启动,报错如下:  1.2 解决办法  妈蛋,解决了一上午最后才发现 ,是这个地方闹腾的,将pom文件的<packaging>pom</packaging>去掉,或者改为<packaging>jar</packa

msix packaging tool打包问题

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 问题描述   我用msix packaging tool打包exe遇到一个问题,主程序需要读写config.ini, 这个config.ini和主程序在同一目录,用

springmvc笔记四(拦截器\maven\packaging\profiles)

1-拦截器 浏览器请求->静态(js\css等静态资源)和动态资源,动态资源->过滤器->中央控制器->拦截器->Controller->拦截器 例如在访问Controller前判断是否有访问的权限 2-过滤器与拦截器区别 (1)归属不同,filter属于servlet,Interceptor属于springMvc (2)拦截内容不同,filter增强所有内容,Interceptor增强sprin

Laravel学习-报错 - vendor\composer/../../database/migrations/2021_09_14_014956_create_table_goods

报错如下  include(D:\phpstudy_pro\WWW\laravel5b\vendor\composer/../../database/migrations/2021_09_14_014956_create_table_good   s.php): failed to open stream: No such file or directory 创建数据库迁移文件后,会在a

转:Learn Rust the Dangerous Way-系列文章翻译-总述

原文地址 太精彩了,不转不足以表达我的喜爱。 前言 《Learn Rust the Dangerous Way》​cliffle.com/p/dangerust/ 最近发现了一个学习Rust的优秀系列文章,本人准备对该系列文章进行翻译。 本文是《Learn Rust the Dangerous Way》系列文章翻译的第一篇 总述 《Learn Rust the Dangerous W

C语言 超市商品(Goods) 销售 (Stock) 信息管理软件

超市商品(Goods) 销售 (Stock) 信息管理软件 数据结构描述: 商品号 商品名 分类 单价 进货量 出货量 库存量 总价 登记日期 生产厂家 电话 数据结构定义: struct GoodsStock{int Gno;//商品编号char Gname[15];//商品名称char category[10]; //商品分类:如蔬菜类、肉类、米面类等float price;//单价i