PTAL2-028秀恩爱分得快(无算法,纯编程)

2023-11-03

PTAL2-028秀恩爱分得快

  • 题目链接PTAL2-029秀恩爱分得快
  • 注意事项:
    • 无算法,纯编程,主要就是性别的处理,亲近度的计算。
    • 记住对照片的输入是要字符串,因为0可能是异性。
    • 二者亲近度都与最大值相等,就输出这对情侣,如果不是相等的,哪怕其中一个人与其他异性的亲近度都是0也要输出(也就是未出现在照片中),测试3就是考这个。
  • 测试点(参考)
10 3
3 1 2 -0
2 3 -4
2 -5 6
7 -8 
  • 代码
#include <iostream>
#include <vector>
using namespace std;

/*
    亲近度相等就输出原来自己,如果不相等就要输出其他最大的,哪怕情侣中一个有拍过照,另一个没有。
    那么这个没有拍过照的,就没出现在照片里,也就是与任何人的亲精度都是0,那也要把所有的异性全部输出,
*/

int gender[1010];       // 存储性别
float closeToOne[1010]; // 存储对第一个人的亲近程度值
float closeToTwo[1010]; // 存储对第二个人的亲近程度值
int N, M, K;
vector<int> List[1010]; // 存储每张相片
int x1, x2;

// 处理输入的图片
void fun1()
{
    string person;
    int length;
    int personNum;
    int picNum = 1;
    int rows = M;
    while (rows--)
    {
        cin >> K;
        while (K--)
        {
            personNum = 0;
            cin >> person;

            // 说明这个数字为负数
            if (person[0] == '-')
            {
                person.erase(0, 1);
                for (auto i : person)
                {
                    personNum = personNum * 10 + int(i) - 48;
                }
                gender[personNum] = -1;
            }
            // 不是负数
            else
            {
                for (auto i : person)
                {
                    personNum = personNum * 10 + int(i) - 48;
                }
                gender[personNum] = 1;
            }
            List[picNum].push_back(personNum);
            // cout << personNum << endl;
        }
        picNum++;
    }
}

// 处理输入的情侣
void fun2(int &x1, int &x2)
{
    string a, b;
    cin >> a >> b;
    int personNum = 0;
    if (a[0] == '-')
    {
        a.erase(0, 1);
        for (auto i : a)
        {
            personNum = personNum * 10 + int(i) - 48;
        }
        gender[personNum] = -1;
    }
    else
    {
        for (auto i : a)
        {
            personNum = personNum * 10 + int(i) - 48;
        }
        gender[personNum] = 1;
    }
    x1 = personNum;

    personNum = 0;
    if (b[0] == '-')
    {
        b.erase(0, 1);
        for (auto i : b)
        {
            personNum = personNum * 10 + int(i) - 48;
        }
        gender[personNum] = -1;
    }
    else
    {
        for (auto i : b)
        {
            personNum = personNum * 10 + int(i) - 48;
        }
        gender[personNum] = 1;
    }
    x2 = personNum;
}

// 处理亲近度的问题
void fun3()
{
    int flag1 = 0, flag2 = 0;
    // 处理每一张照片中人的亲密度
    for (int i = 1; i <= M; i++)
    {
        flag1 = 0;
        flag2 = 0;
        for (auto k : List[i])
        {
            if (k == x1)
            {
                flag1 = 1;
            }
            else if (k == x2)
            {
                flag2 = 1;
            }
        }

        // 看看情侣两人或者其中一人是否在照片中出现。
        if (flag1 && flag2)
        {
            for (auto k : List[i])
            {
                if (gender[k] != gender[x1])
                {
                    closeToOne[k] += 1.0 / List[i].size();
                }
                else
                {
                    closeToTwo[k] += 1.0 / List[i].size();
                }
            }
        }
        else if (flag1 == 1)
        {
            for (auto k : List[i])
            {
                if (gender[k] != gender[x1])
                {
                    closeToOne[k] += 1.0 / List[i].size();
                }
            }
        }
        else if (flag2 == 1)
        {
            for (auto k : List[i])
            {

                if (gender[k] != gender[x2])
                {
                    closeToTwo[k] += 1.0 / List[i].size();
                }
            }
        }
    }
}

//找最大亲密度
void fun4()
{
    void fun5(int a, int b);
    float maxToOne = 0;
    float maxToTwo = 0;
    for (int i = 0; i < N; i++)
    {
        if (gender[i] != gender[x1])
        {
            maxToOne = max(maxToOne, closeToOne[i]);
        }
        if (gender[i] != gender[x2])
        {
            maxToTwo = max(maxToTwo, closeToTwo[i]);
        }
    }

    // 这样写测试点3错误,如果情侣从来没拍过照片,那么与其他人的亲近度都是0。
    // if (maxToOne == closeToOne[x2] && maxToTwo == closeToTwo[x1] && maxToOne != 0 && maxToTwo != 0)

    if (maxToOne == closeToOne[x2] && maxToTwo == closeToTwo[x1]) 
    {
        // cout << "相亲相爱" << endl;
        fun5(x1, x2);
    }
    else
    {
        for (int i = 0; i < N; i++)
        {
            if (gender[i] != gender[x1] && closeToOne[i] == maxToOne)
            {
                fun5(x1, i);
            }
        }
        for (int i = 0; i < N; i++)
        {
            if (gender[i] != gender[x2] && closeToTwo[i] == maxToTwo)
            {
                fun5(x2, i);
            }
        }
    }
}

// 专门打印符号所用的
void fun5(int a, int b)
{
    if (gender[a] == -1)
    {
        cout << "-" << a << " ";
    }
    else
    {
        cout << a << " ";
    }

    if (gender[b] == -1)
    {
        cout << "-" << b << endl;
    }
    else
    {
        cout << b << endl;
    }
}

int main()
{

    cin >> N >> M;
    fun1();

    fun2(x1, x2);
    // cout << x1 << " " << x2 << endl;
    fun3();
    // for (int i = 0; i < N; i++)
    // {
    //     cout << closeToOne[i] << endl;
    // }

    // for (int i = 0; i < N; i++)
    // {
    //     cout << closeToTwo[i] << endl;
    // }
    fun4();
    return 0;
}
/*
10 3
3 1 2 -0
2 3 -4
2 -5 6
7 -8 
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PTAL2-028秀恩爱分得快(无算法,纯编程) 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 按成员序列化

    我已经实现了template
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 用户和组权限管理笔记

    一 管理用户和组 Linux 是一个多用户 多任务的服务器操作系统 1 Linux用户类型 linux用户和组账户概述 用户和组 系统上的每个进程 运行的程序 都是作为特定用户运行的 每个文件都是由一个特定用户拥有 访问文件和目录受到用户的
  • 疯壳-鸿蒙OS-应用程序监听驱动程序消息

    应用程序监听驱动程序消息 疯壳 出品 在前面课程中 我们通过驱动服务基类成员IDeviceIoService中的Dispatch方法进行用户态应用程序和内核态驱动程序的消息交互 其中涉及到两个HdfSBuf data与reply data
  • python的color函数的参数_Python 函数参数

    参数 我们用函数封装了一个功能 但是希望这个功能可以在不同要求的作用下面得到不同的结果 就需要用到参数 def f color if color green print They re green elif color yellow pri
  • 字符串转换,将前端传过来的json格式的数据转化为以“#”号隔开的格式的数据(replaceAll、substring和数组)

    一 字符串转换 将前端传过来的json格式的数据转化为以 号隔开的格式的数据 需求 在题目新增时 前端传过来的四个选项是json格式的数据 后端存入数据库的格式要求将四个选项以 隔开 例如 将 A 招标人 B 投标人 C 设计单位 D 施工
  • 一篇就够!数据增强方法综述

    作者 太子长琴 整理 NewBeeNLP 数据增强 Data Augmentation DA 缓解了深度学习中数据不足的场景 在图像领域首先得到广泛使用 进而延伸到 NLP 领域 并在许多任务上取得效果 一个主要的方向是增加训练数据的多样性
  • TorchVision Transforms API 大升级,支持目标检测、实例/语义分割及视频类任务

    内容导读 TorchVision Transforms API 扩展升级 现已支持目标检测 实例及语义分割以及视频类任务 新 API 尚处于测试阶段 开发者可以试用体验 本文首发自微信公众号 PyTorch 开发者社区 TorchVisio
  • JDK8的 stream流详解-转载

    本文章 转载自头条网 只是觉得好用很详细 所以自己收集 做下笔记 不做任何商业用途 不收任何费用 不喜勿喷 本文是转载 希望不要涉及到文章版权 只是自己做笔记 这个是最重要的 致敬 头条 程序猿的内心独白 1 Stream初体验 我们先来看
  • 11-1 输入输出流

    1 文件打开方式 打开方式通常有 r w a 三种 分别代表 只读 只写 附加 三种操作加 t 表示以文本文件形式打开 加 b 表示以二进制文件形式打开 什么都不加的情况下 默认打开文本文件 二进制文件和文本文件的区别 1 在 window
  • Mybatis多表模型

    多表模型 多表模型分类 一对一 在任意一方建立外键 关联对方的主键 一对多 在多的一方建立外键 关联一的一方的主键 多对多 借助中间表 中间表至少两个字段 分别关联两张表的主键 多表模型一对一操作 sql语句准备 CREATE TABLE
  • QGIS插件式开发(三)---插件开发

    本篇文章着重讲述插件开发的主要流程 揭开QGIS插件式开发的真面目 正所谓万事开头难 掌握了第一步 后面就可以把主要精力放在功能开发上 而不必再为怎么加载插件 init 函数的功能是什么等问题所困扰 一 自动创建 自动创建很简单 比较适合对
  • useMemo和useCallback的区别 及使用场景

    useMemo 和 useCallback 接收的参数都是一样 第一个参数为回调 第二个参数为要依赖的数据 共同作用 1 仅仅 依赖数据 发生变化 才会重新计算结果 也就是起到缓存的作用 两者区别 1 useMemo 计算结果是 retur
  • Qt里的信号与槽原理

    一 什么是信号与槽机制 信号和槽 Signal Slot 用于两个对象 object 进行交流 通俗地来说 就是一个对象发出什么信号 另一个对象执行相应的动作 比如跑步比赛中 裁判员发出枪响信号 运动员开始起跑 信号 Signal 相当于发
  • Dialog的layout中有fragment,第二次报错

    1 概述 Dialog用的是最简单的AlertDialog Builder建立的 通过setView view 实现自定义布局 布局里嵌套了一个自定义的fragment 第一次弹出对话框的时候没有问题 第二次再弹的话就会出现错误信息 Bin
  • 阿里云——云安全中心安全事件提醒:挖矿程序

    近日收到云安全中心安全事件提醒 出现了紧急安全事件 挖矿程序 建议您立即登录查看事件详情 并根据事件建议的方案进行处理 登录服务器后用top命令查看CPU利用率并不高 感觉不一定真是挖矿程序在作怪 或挖矿还没启动 用ps ef命令列出进程
  • 数据类型、python数字、数据类型转换、字符串

    目录 1 python的数据类型 2 python 数字 2 使用casting完成数据类型转换 3 字符串 4 字符串常用的内置方法 5 字符串的内建方法 6 字符串的内置方法与内建方法的区别有以下几种 1 python的数据类型 可以使
  • Typescript 基本类型 —— 字符串 String

    使用双引号 或单引号 来表示字符串 关键字 string let str string hello world let res string hello world 编译成js var str hello world var res hel
  • python生成t分布随机数_python没有直接生成服从泊松分布随机数的函数吗

    满意答案 bhedba 2017 02 16 采纳率 49 等级 9 已帮助 314人 首先是泊松分布 这是一个离散型的随机变量分布 比较好弄 此外例如考察一些到达事件的概率时 通常服从泊松分布 因此该分布相当实用 在开始编写之前 先感谢知
  • 图神经网络学习01:图卷积神经网络GCN实战解决论文分类问题(tensorflow实现)

    图神经网络学习01 图卷积神经网络GCN实战解决论文分类问题 tensorflow实现 文章目录 图神经网络学习01 图卷积神经网络GCN实战解决论文分类问题 tensorflow实现 前言 1 数据集的介绍 2 网络的搭建 3 数据的处理
  • Anaconda_Python视觉项目TensorFlow_scikit-learn和OpenCV及其Raspberry Pi雾计算

    设置 Anaconda 环境 介绍和安装 Python 和 Anaconda 安装库 探索Jupyter Notebook TensorFlow创建图像字幕 图像字幕 字幕模型 Jupyter执行模型 训练模型 OpenCV 读取车牌 读取
  • PTAL2-028秀恩爱分得快(无算法,纯编程)

    PTAL2 028秀恩爱分得快 题目链接 PTAL2 029秀恩爱分得快 注意事项 无算法 纯编程 主要就是性别的处理 亲近度的计算 记住对照片的输入是要字符串 因为0可能是异性 二者亲近度都与最大值相等 就输出这对情侣 如果不是相等的 哪