PTA L2-028 秀恩爱分得快

2024-03-24 00:36
文章标签 l2 pta 028 恩爱 分得

本文主要是介绍PTA L2-028 秀恩爱分得快,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

古人云:秀恩爱,分得快。

互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度。如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K。任意两个人如果同时出现在若干张照片里,他们之间的亲密度就是所有这些同框照片对应的亲密度之和。下面给定一批照片,请你分析一对给定的情侣,看看他们分别有没有亲密度更高的异性朋友?

输入格式:

输入在第一行给出 2 个正整数:N(不超过1000,为总人数——简单起见,我们把所有人从 0 到 N-1 编号。为了区分性别,我们用编号前的负号表示女性)和 M(不超过1000,为照片总数)。随后 M 行,每行给出一张照片的信息,格式如下:

K P[1] ... P[K]

其中 K(≤ 500)是该照片中出现的人数,P[1] ~ P[K] 就是这些人的编号。最后一行给出一对异性情侣的编号 A 和 B。同行数字以空格分隔。题目保证每个人只有一个性别,并且不会在同一张照片里出现多次。

输出格式:

首先输出 A PA,其中 PA 是与 A 最亲密的异性。如果 PA 不唯一,则按他们编号的绝对值递增输出;然后类似地输出 B PB。但如果 A 和 B 正是彼此亲密度最高的一对,则只输出他们的编号,无论是否还有其他人并列。

输入样例 1:

10 4
4 -1 2 -3 4
4 2 -3 -5 -6
3 2 4 -5
3 -6 0 2
-3 2

输出样例 1:

-3 2
2 -5
2 -6

输入样例 2:

4 4
4 -1 2 -3 0
2 0 -3
2 2 -3
2 -1 2 
-3 2

输出样例 2:

-3 2

做法:

注意:0和-0是不一样的,用字符串读入

1.读入数据分男女,计算亲密度

2.读入一对异性情侣,并判断男女

        2.1找出各自的最大亲密度

        2.2判断是否为彼此亲密度最高的一位

                2.2.1是则只输出二者的编号

                2.2.2不是输出各自的最亲密异性

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 1010;double g[N][N];//g[男][女]
int man[N],woman[N];int get(string& str,int id)
{int res = 0;for(int i = id;i < str.size();i++)res = res * 10 + str[i] - '0';return res;
}
int main()
{int n = 0,m = 0;cin >> n >> m;while(m--){int k = 0,id_m = 0,id_w = 0;string str;cin >> k;for(int i = 0;i < k;i++){cin >> str;if(str[0] == '-'){int t = get(str,1);woman[id_w++] = t;}else man[id_m++] = get(str,0);}double res = 1.0 / k;for(int i = 0;i < id_m;i++)for(int j = 0;j < id_w;j++)g[man[i]][woman[j]] += res;}int p1 = 0,p2 = 0;double mp1 = 0.0,mp2 = 0.0;string str;cin >> str;if(str[0] == '-'){p1 = get(str,1);cin >> str;p2 = get(str,0);for(int i = 0;i < n;i++){if(g[i][p1] > mp1) mp1 = g[i][p1];if(g[p2][i] > mp2) mp2 = g[p2][i];}if(abs(g[p2][p1] - mp2) < 1e-6 && abs(mp1 - mp2) < 1e-6)printf("-%d %d",p1,p2);else{for(int i = 0;i < n;i++)if(abs(g[i][p1] - mp1) < 1e-6) printf("-%d %d\n",p1,i);for(int i = 0;i < n;i++)if(abs(g[p2][i] - mp2) < 1e-6) printf("%d -%d\n",p2,i);}}else{p1 = get(str,0);cin >> str;p2 = get(str,1);for(int i = 0;i < n;i++){if(g[p1][i] > mp1) mp1 = g[p1][i];if(g[i][p2] > mp2) mp2 = g[i][p2];}if(abs(g[p1][p2] - mp1) < 1e-6 && abs(mp1 - mp2) < 1e-6)printf("-%d %d",p2,p1);else{for(int i = 0;i < n;i++)if(abs(g[p1][i] - mp1) < 1e-6) printf("%d -%d\n",p1,i);for(int i = 0;i < n;i++)if(abs(g[i][p2] - mp2) < 1e-6) printf("-%d %d\n",p2,i);}}return 0;
}

结果:

这篇关于PTA L2-028 秀恩爱分得快的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

PTA求一批整数中出现最多的个位数字

作者 徐镜春 单位 浙江大学 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n

pta-2024年秋面向对象程序设计实验一-java

文章申明:作者也为初学者,解答仅供参考,不一定是最优解; 一:7-1 sdut-sel-2 汽车超速罚款(选择结构) 答案: import java.util.Scanner;         public class Main { public static void main(String[] arg){         Scanner sc=new Scanner(System

【机器学习 sklearn】模型正则化L1-Lasso,L2-Ridge

#coding:utf-8from __future__ import divisionimport sysreload(sys)sys.setdefaultencoding('utf-8')import timestart_time = time.time()import pandas as pd# 输入训练样本的特征以及目标值,分别存储在变量X_train与y_train之中。

【Python机器学习】核心数、进程、线程、超线程、L1、L2、L3级缓存

如何知道自己电脑的CPU是几核的,打开任务管理器(同时按下:Esc键、SHIFT键、CTRL键) 然后,点击任务管理器左上角的性能选项,观察右下角中的内核:后面的数字,就是你CPU的核心数,下图中我的是16个核心的。 需要注意的是,下面的逻辑处理器:32 表示支持 32 线程(即超线程技术) 图中的进程:和线程:后面的数字代表什么 在你上传的图片中,“进程:180” 和 “线程:3251”

ASTER L2 表面反射率 SWIR 和 ASTER L2 表面反射率 VNIR V003

ASTER L2 Surface Reflectance SWIR and ASTER L2 Surface Reflectance VNIR V003 ASTER L2 表面反射率 SWIR 和 ASTER L2 表面反射率 VNIR V003 简介 ASTER 表面反射率 VNIR 和 SWIR (AST_07) 数据产品 (https://lpdaac.usgs.gov/documen

NASA:ASTER L2 表面辐射率(E(辐射率)和 T(地表温度)) V003数据集

ASTER L2 Surface Emissivity V003 ASTER L2 表面辐射率 V003 简介 ASTER L2 地表发射率是一种按需生成的产品((https://lpdaac.usgs.gov/documents/996/ASTER_Earthdata_Search_Order_Instructions.pdf)),利用 8 至 12 µm 光谱范围内的五个热红外(TIR)

【Arm Cortex-X925】 -【第九章】-L2 内存系统

9. L2 内存系统 Cortex®-X925 核心的 L2 内存系统通过 CPU 桥接器将核心与 DynamIQ™ Shared Unit-120 连接。它包括私有的 L2 缓存。 L2 缓存是统一的,并且对集群中的每个 Cortex®-X925 核心都是私有的。 以下表格显示了 L2 内存系统的特点。 9.1 L2 缓存 集成的 L2 缓存处理来自指令和数据侧的指令和数据请求,以及

PTA L1-037 A除以B

L1-037 A除以B(10分) 真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。 输入格式: 输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。 输出格式: 在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商

面向对象_引用类型_内存分析_垃圾回收JAVA028-033

来源:http://www.bjsxt.com/ 1、S01E028_01面向对象概述 2、面向对象编程(OOP)的本质 ——以类的方式组织代码,以对象的方式组织(封装)数据 对象:是具体的事物 类:是对对象的抽象(抽象 抽出象的部分) 先有具体的对象,然后抽象各个对象之间象的部分,归纳出类,通过类再认识其它对象 3、引用类型 JAVA中除基本类型之外的变量类型都称之为引用类型

028、架构_高可用_主从原理

MySQL半同步复制概览 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。主从复制的基本过程如下图所示: 主从复制的完成通过以下三个进程实现的 主库 binary log dump 线程:当从库连接主库时,主库会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此