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秀恩爱分得快(无算法,纯编程) 的相关文章

随机推荐

  • 用户和组权限管理笔记

    一 管理用户和组 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可能是异性 二者亲近度都与最大值相等 就输出这对情侣 如果不是相等的 哪