PTA 秀恩爱分得快(树)

题目

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

互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度。如果一张照片上出现了 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

题解(编者的错解,能过一半,后一半其中一个错误,其他超时,不知道为什么错误,没想到什么极端样例能让其不过,思想和下面给出的正解几乎一致)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;/*** @author akuya* @create 2023-10-31-15:15*/
public class love {static int N=1005;static double arr[][]=new double[N][N];static int sex[]=new int[N];static int n,m;static PriorityQueue<Integer> lpq=new PriorityQueue<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return Math.abs(o1)-Math.abs(o2);}});static PriorityQueue<Integer> opq=new PriorityQueue<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return Math.abs(o1)-Math.abs(o2);}});public static void main(String[] args) throws IOException {BufferedReader br=new BufferedReader(new InputStreamReader(System.in));String nm[]=br.readLine().split(" ");n=Integer.parseInt(nm[0]);m=Integer.parseInt(nm[1]);while(m--!=0){String kn[]=br.readLine().split(" ");int k=Integer.parseInt(kn[0]);for(int i=1;i<k;i++){for(int j=i+1;j<=k;j++){int x=Integer.parseInt(kn[i]);int y=Integer.parseInt(kn[j]);int ax=Math.abs(x);int ay=Math.abs(y);if(kn[i].charAt(0)=='-'){sex[ax]=-1;}else{sex[x]=1;}if (kn[j].charAt(0)=='-') {sex[ay]=-1;}else{sex[y]=1;}double ans=(double)1/k;arr[ax][ay]+=ans;arr[ay][ax]+=ans;}}}String lo[]= br.readLine().split(" ");int l=Integer.parseInt(lo[0]);int o=Integer.parseInt(lo[1]);int al=Math.abs(l);int ao=Math.abs(o);double lmax=-1;double omax=-1;for(int i=0;i<n;i++){if(l*sex[i]<0){if(arr[al][i]>lmax){lpq.clear();lpq.add(sex[i]*i);lmax=arr[al][i];}else if(arr[al][i]==lmax){lpq.add(sex[i]*i);}}}for(int i=0;i<n;i++){if(o*sex[i]<0){if(arr[ao][i]>omax){opq.clear();opq.add(sex[i]*i);omax=arr[ao][i];}else if(arr[ao][i]==omax){opq.add(sex[i]*i);}}}if(lpq.contains(o)&&opq.contains(l)){System.out.println(l+" "+o);return;}while(!lpq.isEmpty()){System.out.println(l+" "+lpq.poll());}while(!opq.isEmpty()){System.out.println(o+" "+opq.poll());}}
}

正解

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** @author akuya* @create 2023-11-01-11:57*/
public class Main {static int N=1005;static List<Integer> tree =new ArrayList<>();static int n,flag=0;static int a[]=new int[N];public static void main(String[] args) {Scanner scanner=new Scanner(System.in);n=scanner.nextInt();for(int i=1;i<=n;i++) a[i]=scanner.nextInt();creat(1,n);if(tree.size()!=n){flag=1;tree.clear();creat(1,n);}if(tree.size()==n){System.out.println("YES");int len=tree.size();int log=1;for(int i:tree){if(log==len){System.out.println(i);}elseSystem.out.print(i+" ");log++;}}else System.out.println("NO");}public static void creat(int root,int last){if(root>last) return;int left=root+1;int right=last;if(flag==0){while(left<=last&&a[left]<a[root]) ++left;while(right>root&&a[right]>=a[root]) --right;}else{while(left<=last&&a[left]>=a[root]) ++left;while(right>root&&a[right]<a[root]) --right;}if(right!=(left-1)) return;creat(root+1,right);creat(left,last);tree.add(a[root]);}}

思路

这道题的思路挺简单,就是用一个动态数组存储照片中的人,用一个数组存储性别,然后n2遍历即可做出。

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

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

相关文章

ruoyi框架前端修改message消失时间

修改教程 打开modal.js文件&#xff0c;找到Message.success&#xff0c;然后把参数设置进去就行。单位是10001秒。 // 可以设置的参数如下export interface ElMessageOptions {/** Message text */message: string | VNode/** Message type */type?: MessageType/** Custom …

4.5 Object类

思维导图&#xff1a; 4.5 Object类笔记总结 1. 定义和重要性 Java提供的Object类是所有Java类的根类。直接或间接&#xff0c;所有的Java类都继承自Object类。它被称为超类。 2. 默认行为 当创建一个新的类且没有显式地使用extends关键字指定一个父类时&#xff0c;该类默认…

Microsoft Edge不能工作了,可能原因不少,那么如何修复呢

Microsoft Edge打不开或不能加载网页是用户在Windows 10、Android、Mac和iOS设备上的网络浏览器上遇到的许多错误之一。其他Microsoft Edge问题可能包括浏览器窗口和选项卡冻结、网站崩溃、互联网连接错误消息以及丢失Microsoft Edge书签、收藏夹、密码和收藏。 Microsoft Edg…

金蝶云星空自定义校验器和使用

文章目录 金蝶云星空自定义校验器和使用 金蝶云星空自定义校验器和使用 1、创建类&#xff0c;并继承抽象接口 using Kingdee.BOS.Core; using Kingdee.BOS.Core.Validation; using System;namespace mm.K3.SCM.App.Service.PlugIn.SC.Validator {public class AfterOrderChe…

跨境电商大作战:2023黑色星期五准备指南

黑色星期五&#xff0c;作为全球购物狂欢的象征&#xff0c;已经成为了电商业务的一年一度的重要节点。尤其对于跨境电商来说&#xff0c;这一天意味着巨大的商机和挑战。为了在这个竞争激烈的时刻脱颖而出&#xff0c;跨境电商必须做好充分的准备。Nox聚星在这里给大家分享几个…

最新ai系统ChatGPT程序源码+详细搭建教程+以图生图+Dall-E2绘画+支持GPT4+Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

Q-CTRL首次在量子市场获得ISO 27001国际标准认证

​&#xff08;图片来源&#xff1a;网络&#xff09; 国际公认的ISO 27001标准概述了信息安全管理系统&#xff08;ISMS&#xff09;的实施&#xff0c;并表现了管理风险的能力&#xff0c;包括与客户数据安全相关的风险。总部位于悉尼的Q-CTRL是第一家获得ISO 27001认证的独…

Vue 3 中的 Composition API

✨理解 Vue 3 中的 Composition API &#x1f383; Vue 3 引入了全新的 Composition API&#xff0c;相较于传统的 Options API&#xff0c;它具备许多优势和适用场景。下面将介绍 Composition API 的优势和使用场景&#xff0c;并为你带来更好的开发体验。 &#x1f381; Co…

Linux 启用本地ISO作为软件源

环境&#xff1a;sle12sp5 &#xff08;open SUSE&#xff09; 1、禁用现有的源 查看源&#xff1a;sle12sp5 zypper lr -u ➜ sle12sp5 zypper lr -u Repository priorities are without effect. All enabled repositories share the same prior…

学生成绩这样分发

作为一名老师&#xff0c;经常被问到这样的问题&#xff1a;“老师&#xff0c;我的成绩什么时候发&#xff1f;”、“老师&#xff0c;我的成绩出来了吗&#xff1f;”等等。倍感烦恼&#xff0c;需要花费时间来回答这些问题&#xff0c;而且有时候学生还会因为成绩不佳而抱怨…

C++对象的内存分布和虚函数表

Linux C/C 开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全) c中一个类中无非有四种成员&#xff1a;静态数据成员和非静态数据成员&#xff0c;静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来…

电力兆瓦-小记

电力产能的换算单位通常使用以下方式&#xff1a; 1 兆瓦&#xff08;MW&#xff09;等于 1,000 千瓦&#xff08;kW&#xff09;。 1 千瓦&#xff08;kW&#xff09;等于 1,000 瓦特&#xff08;W&#xff09;。 1 兆瓦&#xff08;MW&#xff09;等于 1,000,000 瓦特&#…

OpenSSL生成CA证书

基本概念 证书类别 根证书&#xff1a;生成服务端证书&#xff0c;客户端证书的基础。自签名。服务端证书&#xff1a;由根证书签发。配置在服务器上。客户端证书&#xff1a;由根证书签发。配置在浏览器、移动APP等客户端上。 认证方式 单向认证&#xff08;Client鉴权Serv…

ONES插件开发的学习笔记

首先插件的功能是私有化部署的功能, 只能在私有化部署的 ONES 上能安装和使用插件。 安装最新版本 Node.js 的稳定版, 配置 ONES 的私有 npm 仓库&#xff1a; $ npm config set registryhttps://registry.npmjs.org/ $ npm config set ones:registryhttps://npm.partner.one…

docker安装软件

docker安装redis及其配置 docker安装redis及其配置 安装镜像 查询镜像 docker search redis拉取镜像 docker pull redis:7.2.2创建文件目录 创建目录 mkdir /home/redis/conf mkdir /home/redis/data创建配置文件 cd /home/redis/conf touch redis.conf以下链接中下载相…

electron汇总

python3自带了pip pip search已经被禁用&#xff0c;安装pip—— pip install pip-searchpython3.x移除了distutils 管理员权限下运行cmd&#xff0c;运行以下命令 // 修改pip镜像地址 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ // 安装 Set…

jsoncpp fatal error C1083: 无法打开编译器生成的文件

使用jsoncpp库的时候&#xff0c;在Debug模式下正常&#xff0c;但是release却报错&#xff0c;开始以为是开发项目设置问题&#xff0c;于是网络搜索&#xff0c;发现是jsoncpp的编译选项问题。 修改生成静态库文件的工程的属性&#xff1a;路径为&#xff1a;菜单&#xff0…

用二维码搭建设备巡检系统,轻松实现扫码巡检和数字化台账

针对设备状态不透明、纸质记录效率低、故障报修不及时等设备点巡检的常见问题&#xff0c;可以在草料二维码上自主搭建涵盖点检、巡检、报修、维修、保养等功能的管理系统&#xff0c;无需安装APP&#xff0c;微信扫码就能查看设备档案、用表单替代纸质检查表。 譬如“台州沿海…

基于FPGA的图像差分运算及目标提取实现,包含testbench和MATLAB辅助验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2022/07/28 01:51:…

ctfshow-web入门37-52

include($c);表达式包含并运行指定文件。 使用data伪协议 ?cdata://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg 是<?php system(cat flag.php);?> base64加密 源代码查看得到flag 38 多禁用了ph…