Acwing 5471. 数对推理【思维+模拟】

news2025/1/24 1:43:25

原题链接:https://www.acwing.com/problem/content/5474/

题目描述:

奶牛贝茜和奶牛贝蒂各有一个整数数对。

每个数对都包含两个 1∼9 之间的不同整数。

这两个数对恰好包含一个公共数,即恰好有一个整数同时包含于这两个数对。

初始时,贝茜和贝蒂都只知道自己拥有的数对,而不清楚对方拥有的数对。

它们希望通过网络交流来获知彼此数对的公共数

但是,它们清楚所有交流信息一定会被农夫约翰截获,且约翰也知道这两个数对恰好包含一个公共数。

为了让截获到交流信息的约翰无法获知这个公共数,它们决定采用如下方式加密信息。

贝茜会准备 n 个两两不同的数对,这些数对均包含两个 1∼9 之间的不同整数,其中一个数对恰好是它拥有的数对,它会将这些数对全部发送给贝蒂。

贝蒂会准备 m 个两两不同的数对,这些数对均包含两个 1∼9 之间的不同整数,其中一个数对恰好是它拥有的数对,它会将这些数对全部发送给贝茜。

当然,约翰会将这些数对(以及是谁发送的)全部获知。

请你对给定信息进行判断,并按要求输出:

  • 如果这些信息足以令约翰准确地推断出公共数字,则输出这个公共数字。
  • 如果这些信息不足以令约翰准确地推断出公共数字,但是不论两头奶牛各自拥有哪个数对,都足以令两头奶牛都准确地推断出公共数字,则输出 0
  • 以上都不是,则输出 -1

输入输出描述:

输入格式

第一行包含两个整数 n,m。

第二行包含 n 个两两不同的数对,这些数对均包含两个 1∼9 之间的不同整数,表示贝茜准备的数对。

第三行包含 m 个两两不同的数对,这些数对均包含两个 1∼9 之间的不同整数,表示贝蒂准备的数对。

在本题中,(1,2) 和 (2,1) 视为同一数对。

数据保证双方拥有的数对包含于各自给出的数对当中,且双方拥有的数对恰好包含一个公共数。

输出格式

按照题目要求,输出公共数字或 0 或 -1

数据范围

前 4 个测试点满足 1≤n,m≤3。
所有测试点满足 1≤n,m≤12

输入样例1:
2 2
1 2 3 4
1 5 3 4
输出样例1:
1
输入样例2:
2 2
1 2 3 4
1 5 6 4
输出样例2:
0
输入样例3:
2 3
1 2 4 5
1 2 1 3 2 3
输出样例3:
-1

解题思路:

这个题目的特点就是题目比较长,理解题意比较困难,感觉就是一个阅读理解题,题读懂了就是很简单的一道题,读不懂就会一直wa,这个题目是很容易wa的,我们对三种情况进行分开分析。

首先我们考虑第一种情况,什么时候农夫约翰可以截取到他们的各自数对的公共数呢,我们来画一个图分析一下,分析图如下所示:

如上图所示,上边是a的数对,下边是b的数对,我们对所有数对进行编号,同时红色线连接表示俩个数对恰好有一个公共数,那么什么时候农夫约翰可以截取到俩人的数对的公共数呢,肯定是当a中的每一个数对和b中的数对的所有有红色线连接数对的公共数只有一种,此时可以通过a连接到b的红线知道他们俩个人数对的公共数,或者是当b中的每一个数对和a中的数对的所有有红色线连接数对的公共数只有一种,此时可以通过b连接到a的红线知道他们俩个人数对的公共数。

当上面的第一种情况不成立时,下面分析第二种情况,什么时候俩头牛都可以知道他们的公共数呢,上面图中,1分别和5,6,7都有一个公共数,当这三个公共数不相同时,那么如果a拿出编号为1的数对时,此时a无法知道俩人的公共数是啥,只有当三个数都一样时,a才能知道公共数是啥,也就是说只有a中的每一个数对,该数对和连出去的红线对应数对的公共都一样,此时a才能推断出俩人的公共数,否咋a无法推断出俩人的公共数,b同理。

上述第二种情况不满足,就是第三种情况了,直接输出-1。

时间复杂度:O(n+m)。

空间复杂度:O(n+m)。

cpp代码如下:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int N=100;

int n,m;
int a[N],b[N];

void solve(int a[],int b[],int n,int m,unordered_map<int,int>&mp,bool& ok)
{
    for(int i=1;i<=n*2;i+=2)
    {
        int x1=a[i],y1=a[i+1];
        int v1=0,v2=0;
        for(int j=1;j<=m*2;j+=2)
        {
            int x2=b[j],y2=b[j+1];
            if(x1==x2 && y1!=y2){
                v1++;
            }
            if(x1!=x2 && y1==y2){
                v2++;
            }
            if(x1==y2 && y1!=x2){
                v1++;
            }
            if(x1!=y2 && y1==x2){
                v2++;
            }
        }
        if(v1!=0 && v2!=0){  //当出现某个数对连出去的红线,出现了俩种公共线,说明情况二肯定是不满足的
            ok=true;
        }
        if(v1!=0){
            mp[x1]++;
        }
        if(v2!=0){
            mp[y1]++;
        }
    }
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n*2;i++)cin>>a[i];
    for(int i=1;i<=m*2;i++)cin>>b[i];
    unordered_map<int,int>mp1,mp2; //mp1记录a连出去的红线对应数对的公共数,mp2记录b的。
    bool ok1=false,ok2=false;  //ok1记录a每个数对连出去的红线对应数对的公共数是否相同,b同理对应b连出去红线到a
    solve(a,b,n,m,mp1,ok1),solve(b,a,m,n,mp2,ok2);  //对a,b分别进行处理
    
    if(mp1.size()==1 || mp2.size()==1){ //情况一
        if(mp1.size()==1)cout<<mp1.begin()->first<<endl;
        else cout<<mp2.begin()->first<<endl;
    }else if(!ok1 && !ok2){ //情况2
        cout<<0<<endl;
    }else {  //情况3
        cout<<-1<<endl;
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1454479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SPSSAU【文本分析】|社会关系网络图

社会网络关系图 社会网络关系图展示关键词之间的关系情况&#xff0c;此处的关系是指‘共词矩阵’&#xff0c;即两个关键词同时出现的频数情况&#xff0c;将‘共词矩阵’信息使用可视化方式进行呈现出来&#xff0c;接下来将分别阐述‘共词矩阵’和‘社会网络关系图’。 共词…

idea 2018.3永久简单激活。激活码

1.打开hosts文件将 0.0.0.0 account.jetbrains.com 添加到文件末尾 C:\Windows\System32\drivers\etc\hosts 2.注册码&#xff1a; MNQ043JMTU-eyJsaWNlbnNlSWQiOiJNTlEwNDNKTVRVIiwibGljZW5zZWVOYW1lIjoiR1VPIEJJTiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaW…

禁止电子邮箱地址登录WordPress后台的插件No Login by Email Address

WordPress 4.5及之后的版本增加了使用注册用户的电子邮件地址代替用户名登录的功能&#xff0c;但是大多数个人站长的管理员邮箱地址都是固定&#xff0c;而且到其他站点进行评论留言也是同一个邮箱地址&#xff0c;很容易给一些别有用心的可乘之机&#xff0c;所以禁止WordPre…

黑马鸿蒙教程学习1:Helloworld

今年打算粗略学习下鸿蒙开发&#xff0c;当作兴趣爱好&#xff0c;通过下华为那个鸿蒙开发认证&#xff0c; 发现黑马的课程不错&#xff0c;有视频和完整的代码和课件下载&#xff0c;装个devstudio就行了&#xff0c;建议32G内存。 今年的确是鸿蒙大爆发的一年呀&#xff0c;…

蝶阀、球阀、阀门百科

一、D71X是蝶阀的型号其中D 就代表了蝶阀,7 代表是对夹式链接,1代表这个蝶阀是中线结构,x就是密封面材质为橡胶。结合起来D71X表示的就是手柄对夹中线蝶阀。 二、J41H-100C型号字母含义介绍 J41H-100C型号是德特森阀门常用的高压截止阀型号字母代表的意思是: J——代表阀门类…

秒懂百科,C++如此简单丨第二十一天:栈和队列

目录 前言 Everyday English 栈&#xff08;Stack&#xff09; 图文解释 实现添加删除元素 实现查看清空栈 完整代码 运行示例 栈的选择题 队列&#xff08;Queue&#xff09; 图文解释 队列的基本用法 完整代码 运行结果 队列的好处 结尾 前言 今天我们将…

自定义类型详解 ----结构体,位段,枚举,联合

目录 结构体 1.不完全声明 2.结构体的自引用 3.定义与初始化 4.结构体内存对齐与结构体类型的大小 结构体嵌套问题 位段 1.什么是位段&#xff1f; 2.位段的内存分配 枚举 1.枚举类型的定义 2.枚举的优点 联合&#xff08;共同体&#xff09; 1.联合体类型的声明以…

ChatGPT的大致原理

国外有个博主写了一篇博文&#xff0c;名字叫TChatGPT: Explained to KidsQ」&#xff0c; 直译过来就是&#xff0c;给小孩子解释什么是ChatGPT。 因为现实是很多的小孩子已经可以用父母的手机版ChatGPT玩了 &#xff0c;ChatGPT几乎可以算得上无所不知&#xff0c;起码给小孩…

数控测量|一文读懂在机检测与机床校准补偿系统

在制造业领域&#xff0c;为了确保产品质量和工艺精确度&#xff0c;在机检测与机床校准补偿系统被广泛应用于机床领域。 原理解析 在机检测与机床校准补偿系统由精密测量仪器、信息处理设备和控制系统组成。 机床校准补偿基于有限元分析和反馈控制理论。对机床进行检测和测量…

《苍穹外卖》知识梳理6-缓存商品,购物车功能

苍穹外卖实操笔记六—缓存商品&#xff0c;购物车功能 一.缓存菜品 可以使用redis进行缓存&#xff1b;另外&#xff0c;在实现缓存套餐时可以使用spring cache提高开发效率&#xff1b;   通过缓存数据&#xff0c;降低访问数据库的次数&#xff1b; 使用的缓存逻辑&#…

fish终端下conda activate失败

【问题】fish终端下激活conda环境报错&#xff1a; >> conda activate base CondaError: Run conda init before conda activate ## 然而运行 conda init fish 仍旧无法解决【解决】 参考&#xff1a;https://github.com/conda/conda/issues/11079 方法一&#xf…

云手机受欢迎背后的原因及未来展望

随着办公模式的演变&#xff0c;云手机的热潮迅速兴起。在各种办公领域&#xff0c;云手机正展现出卓越的实际应用效果。近年来&#xff0c;跨境电商行业迎来了蓬勃发展&#xff0c;其与国内电商的差异不仅体现在整体环境上&#xff0c;更在具体的操作层面呈现出独特之处。海外…

2024年顶级游戏公司的薪酬大揭秘!

游戏业已经成为娱乐产业的重要组成部分&#xff0c;随着越来越多精美绝伦的游戏问世&#xff0c;为我们带来无数欢乐。它不仅深深融入了我们的生活&#xff0c;也促进了游戏开发作为职业的热门程度&#xff0c;吸引了无数有才华和梦想的年轻人加入这一行业。 在这样一个充满机…

【问题】pycharm无法添加conda环境,没有反应!

① 问题描述 pycharm版本:pycharm-community-2023.3.3 在conda中已经创建了虚拟环境Python38,想要在pycharm中设置添加Python编译器,想使用conda的环境。但是,怎么都没有反应。 ② 解决方法 可以选择系统解释器,然后选中conda虚拟环境envs中的Python.exe作为系统解释器…

Python四级考试笔记

Python四级考试笔记【源源老师】 四级标准 一、 理解函数及过程、函数的参数、函数的返回值、变量作用域等概念。 二、 能够创建简单的自定义函数。 三、 理解算法以及算法性能、效率的概念&#xff0c;初步认识算法优化 效率的方法。 四、 理解基本算法中递归的概念。 五、 掌…

5G——小区搜索流程

小区搜索流程 小区搜索目标&#xff1a;读取到SIB1. 小区搜索流程概述&#xff1a;SIB1在PDSCH信道承载&#xff0c;承载SIB1的信道在哪个位置由PDCCH告诉&#xff0c;而PDCCH的基本信息由MIB告诉&#xff0c;MIB信息由广播信道PBCH广播出去&#xff0c;物理信道解调需要解调…

使用 apt 源安装 ROCm 6.0.x 在Ubuntu 22.04.01

从源码编译 rocSolver 本人只操作过单个rocm版本的情景&#xff0c;20240218 ubuntu 22.04.01 1&#xff0c;卸载原先的rocm https://docs.amd.com/en/docs-5.1.3/deploy/linux/os-native/uninstall.html # Uninstall single-version ROCm packages sudo apt autoremove ro…

掌上新闻随心播控,HarmonyOS SDK助力新浪新闻打造精致易用的资讯服务新体验

原生智能是HarmonyOS NEXT的核心亮点之一&#xff0c;依托HarmonyOS SDK丰富全面的开放能力&#xff0c;开发者只需通过几行代码&#xff0c;即可快速实现AI功能。新浪新闻作为鸿蒙原生应用开发的先行者之一&#xff0c;从有声资讯入手&#xff0c;将基于Speech Kit朗读控件上线…

几种SLAM算法跑出的效果比较

以下所有的SLAM算法均使用此辆ROS小车跑。 文章目录 1.Gmapping SLAM算法构建地图2.Hector SLAM算法构建地图3.Karto SLAM算法构建地图4.Cartographer SLAM算法构建地图5.深度摄像头的建图6.rtab-map(深度双目与激光雷达构建三维建图)7.ORB-SLAM8.无奖竞猜 1.Gmapping SLAM算法…

企业计算机服务器中了eking勒索病毒怎么办?Eking勒索病毒解密数据恢复

企业的生产运营离不开数据支撑&#xff0c;通过数据整合可以制定合理的解决发展方向&#xff0c;对于企业来说&#xff0c;保护数据安全是一项至关重要的工作。但网络安全威胁无处不在&#xff0c;给企业的生产运营带来了极大困扰。近日&#xff0c;云天数据恢复中心接到许多企…