团体程序设计天梯赛-练习集L2篇⑤

news2024/12/27 4:27:13

🚀欢迎来到本文🚀
🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。
🏀个人主页:@陈童学哦`CSDN
💡所属专栏:PTA
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝
​ ⛱️刷题的当下应是享受的!望与诸君共勉!🏄‍♂️

在这里插入图片描述

下面是PTA的OJ平台

PTA的OJ平台(点击我直跳)

题目汇总

  • 题解
    • L2-016 愿天下有情人都是失散多年的兄妹
    • L2-017 人以群分
    • L2-018 多项式A除以B
    • L2-019 悄悄关注
  • 写在最后

题解

L2-016 愿天下有情人都是失散多年的兄妹

呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?

输入格式:
输入第一行给出一个正整数N(2 ≤ N ≤10
4
),随后N行,每行按以下格式给出一个人的信息:

本人ID 性别 父亲ID 母亲ID
其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如果某人的父亲或母亲已经不可考,则相应的ID位置上标记为-1。

接下来给出一个正整数K,随后K行,每行给出一对有情人的ID,其间以空格分隔。

注意:题目保证两个人是同辈,每人只有一个性别,并且血缘关系网中没有乱伦或隔辈成婚的情况。

输出格式:
对每一对有情人,判断他们的关系是否可以通婚:如果两人是同性,输出Never Mind;如果是异性并且关系出了五服,输出Yes;如果异性关系未出五服,输出No。

输入样例:
24
00001 M 01111 -1
00002 F 02222 03333
00003 M 02222 03333
00004 F 04444 03333
00005 M 04444 05555
00006 F 04444 05555
00007 F 06666 07777
00008 M 06666 07777
00009 M 00001 00002
00010 M 00003 00006
00011 F 00005 00007
00012 F 00008 08888
00013 F 00009 00011
00014 M 00010 09999
00015 M 00010 09999
00016 M 10000 00012
00017 F -1 00012
00018 F 11000 00013
00019 F 11100 00018
00020 F 00015 11110
00021 M 11100 00020
00022 M 00016 -1
00023 M 10012 00017
00024 M 00022 10013
9
00021 00024
00019 00024
00011 00012
00022 00018
00001 00004
00013 00016
00017 00015
00019 00021
00010 00011
输出样例:
Never Mind
Yes
Never Mind
No
Yes
No
Yes
No
No

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int inf=1e5+5;
vector<int>vec[inf];
bool vis[inf];
char sex[inf];
bool flag;
void Dfs(int x,int num)
{
	if(num>=5)
		return;
	for(int i=0;i<vec[x].size();i++)
	{
		if(!vis[vec[x][i]])
		{
			vis[vec[x][i]]=1;
			Dfs(vec[x][i],num+1);
		}
		else
			flag=1;
	}
	
}

int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		int t,fa,ma;
		char ch;
		scanf("%d ",&t);
		sex[t]=getchar();
		scanf(" %d %d",&fa,&ma);
		if(fa!=-1)
		{
			vec[t].push_back(fa);
			sex[fa]='M';
		}
		if(ma!=-1)
		{
			vec[t].push_back(ma);
			sex[ma]='F';
		}
	}
	cin>>T;
	while(T--)
	{
		int x,y;
		scanf("%d %d",&x,&y);
		if(sex[x]==sex[y])
			cout<<"Never Mind"<<endl;
		else
		{
			memset(vis,0,sizeof(vis));
			vis[x]=1;
			vis[y]=1;
			flag=0;
			Dfs(x,1);
			Dfs(y,1);
			if(flag)
				cout<<"No"<<endl;
			else
				cout<<"Yes"<<endl;
		}
	}
}

L2-017 人以群分

社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。

输入格式:
输入第一行给出一个正整数N(2≤N≤10
5
)。随后一行给出N个正整数,分别是每个人的活跃度,其间以空格分隔。题目保证这些数字以及它们的和都不会超过2
31

输出格式:
按下列格式输出:

Outgoing #: N1
Introverted #: N2
Diff = N3
其中N1是外向型人的个数;N2是内向型人的个数;N3是两群人总活跃度之差的绝对值。

输入样例1:
10
23 8 10 99 46 2333 46 1 666 555
输出样例1:
Outgoing #: 5
Introverted #: 5
Diff = 3611
输入样例2:
13
110 79 218 69 3721 100 29 135 2 6 13 5188 85
输出样例2:
Outgoing #: 7
Introverted #: 6
Diff = 9359

AC代码:

#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>a[i];
	sort(a,a+n);
	int sum1=0,cnt1=0;
	int sum2=0,cnt2=0;
	for(int i=0;i<n/2;i++)
	{
		sum1+=a[i];
		cnt1++;
	}
	for(int i=n/2;i<n;i++)
	{
		sum2+=a[i];
		cnt2++;
	}
	printf("Outgoing #: %d\n",cnt2);
	printf("Introverted #: %d\n",cnt1);
	printf("Diff = %d",sum2-sum1);
}

L2-018 多项式A除以B

这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。

输入格式:
输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下:

N e[1] c[1] … e[N] c[N]
其中N是该多项式非零项的个数,e[i]是第i个非零项的指数,c[i]是第i个非零项的系数。各项按照指数递减的顺序给出,保证所有指数是各不相同的非负整数,所有系数是非零整数,所有整数在整型范围内。

输出格式:
分两行先后输出商和余,输出格式与输入格式相同,输出的系数保留小数点后1位。同行数字间以1个空格分隔,行首尾不得有多余空格。注意:零多项式是一个特殊多项式,对应输出为0 0 0.0。但非零多项式不能输出零系数(包括舍入后为0.0)的项。在样例中,余多项式其实有常数项-1/27,但因其舍入后为0.0,故不输出。

输入样例:
4 4 1 2 -3 1 -1 0 -1
3 2 3 1 -2 0 1
输出样例:
3 2 0.3 1 0.2 0 -1.0
1 1 -3.1

AC代码:

#include<bits/stdc++.h>
using namespace std;
double c1[100005],c2[100005],c3[100005];
int f(double a[],int e)
{
	int ret=0;
	for(int i=e;i>=0;i--)
	{
		if(fabs(a[i])>=0.05)
			ret++;
	}
	return ret;
}
void solve(double a[],int e)
{
	cout<<f(a,e);
	if(f(a,e)==0)
		cout<<" 0 0.0";
	else
	{
		for(int i=e;i>=0;i--)
		{
			if(fabs(a[i])>=0.05)
				printf(" %d %.1lf",i,a[i]);
		}
	}
	cout<<endl;
}
int main()
{
	int n;
	while(cin>>n)
	{
		int maxe1,maxe2;
		for(int i=0;i<n;i++)
		{
			int e;
			double c;
			cin>>e>>c;
			if(i==0)
			{
				maxe1=e;
				
			}
			c1[e]=c;
		}
		int m;
		cin>>m;
		for(int i=0;i<m;i++)
		{
			int e;
			double c;
			cin>>e>>c;
			if(i==0)
			{
				maxe2=e;
			}
			c2[e]=c;
		}
		int d=maxe1-maxe2;
		while(maxe2<=maxe1)
		{
			double v=c1[maxe1]/c2[maxe2];
			c3[maxe1-maxe2]=v;
			for(int i=maxe1,j=maxe2;i>=0&&j>=0;j--,i--)
			{
				c1[i]-=c2[j]*v;
			}
			while(fabs(c1[maxe1])<0.05)
				maxe1--;
		}
		solve(c3,d);
		solve(c1,maxe1);
	}
	system("pause");
	return 0;
}

L2-019 悄悄关注

新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。

输入格式:
输入首先在第一行给出某用户的关注列表,格式如下:

人数N 用户1 用户2 …… 用户N
其中N是不超过5000的正整数,每个用户i(i=1, …, N)是被其关注的用户的ID,是长度为4位的由数字和英文字母组成的字符串,各项间以空格分隔。

之后给出该用户点赞的信息:首先给出一个不超过10000的正整数M,随后M行,每行给出一个被其点赞的用户ID和对该用户的点赞次数(不超过1000),以空格分隔。注意:用户ID是一个用户的唯一身份标识。题目保证在关注列表中没有重复用户,在点赞信息中也没有重复用户。

输出格式:
我们认为被该用户点赞次数大于其点赞平均数、且不在其关注列表上的人,很可能是其悄悄关注的人。根据这个假设,请你按用户ID字母序的升序输出可能是其悄悄关注的人,每行1个ID。如果其实并没有这样的人,则输出“Bing Mei You”。

输入样例1:
10 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao
8
Magi 50
Pota 30
LLao 3
Ammy 48
Dave 15
GAO3 31
Zoro 1
Cath 60
输出样例1:
Ammy
Cath
Pota
输入样例2:
11 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao Pota
7
Magi 50
Pota 30
LLao 48
Ammy 3
Dave 15
GAO3 31
Zoro 29
输出样例2:
Bing Mei You

AC代码:

#include<bits/stdc++.h>
using namespace std;
struct node
{
	string name;
	int cnt;
}stu[10001];
bool cmp(node a,node b)
{
	return a.name<b.name;
}
int main()
{
	string s;
	map<string,bool>mp;
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s;
		mp[s]=1;
	}
	int m;
	cin>>m;
	double sum=0;
	for(int i=1;i<=m;i++)
	{
		cin>>stu[i].name>>stu[i].cnt;
		sum+=stu[i].cnt;
	}
	sum/=m*1.0;
	int count=0;
	sort(stu,stu+m+1,cmp);
	for(int i=1;i<=m;i++)
	{
		if(stu[i].cnt>sum&&mp[stu[i].name]!=1)
		{
			cout<<stu[i].name<<endl;
			count++;
		}
	}
	if(count==0)
		cout<<"Bing Mei You";
	
}

写在最后

🍉🍉🍉不必偏执于未知的真实,身处的当下即是意义和真实,爱才是解题的答案,也是刻画人生色彩的笔尖,耐心的走下去,总会遇到你爱的人和爱你的人。

🍁🍁🍁好啦,本文的内容就到此结束啦,我们下期再见哦!另外在祝各位小伙伴们要天天开心哦!
🍂🍂🍂如果你觉得本文对你有帮助的话,还请不要吝惜您的三连哦!您的支持就是我创作的最大动力!!爱你们💕💕💕
在这里插入图片描述

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

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

相关文章

Vue+leaflet笔记之克里金插值

Vueleaflet笔记之克里金插值 文章目录 Vueleaflet笔记之克里金插值开发环境代码简介组件库简介安装依赖库实现思路turf生成随机数据方法一&#xff1a;kriging库插值方法二&#xff1a;kriging-contour插值(矢量)方法三&#xff1a;kriging-contour插值(栅格) 本文介绍了Web端使…

逆向工具(IDA、pyinstxtractor+uncompyle6、jadx等持续更新)

IDA Pro IDA Pro&#xff08;Interactive Disassembler Professional&#xff09;交互式反汇编器专业版&#xff0c;CTF、RE、PWN必备。 打开一个可执行文件前&#xff0c;应先用file命令或者DIE等工具&#xff0c;确定是32位还是64位&#xff0c;然后用相应的IDA工具打开可执…

ModaHub魔搭社区:商业向量数据库产品Pincone的特点与应用

目录 Pincone简介 Pincone有以下几个特点 高性能搜索 全功能管理 轻松扩容 Pincone能干什么&#xff1f; 如何接入Pincone Pincone简介 Pincone 可以算是当前最火的商业向量数据库产品了&#xff0c;它最近获得了1亿美元的B轮融资&#xff0c;估值达到7.5 亿美元&#x…

YOLOv8实战火焰和烟雾检测 (视频教程)

课程链接&#xff1a;https://edu.csdn.net/course/detail/38718 YOLOv8 基于先前 YOLO 版本在目标检测任务上的成功&#xff0c;进一步提升性能和灵活性。 本课程将手把手地教大家使用YOLOv8结合可变形卷积&#xff08;deformable convolution&#xff09;训练火焰和烟雾数…

TypeScript 【类型推断】与【类型别名】的使用解读

什么是类型推断&#xff1f; 在 TypeScript 中&#xff0c; 如果声明变量时&#xff0c;没有明确的指定类型&#xff0c;那么 TypeScript 会依照类型推论&#xff08;Type Inference&#xff09;的规则推断出一个类型。 以下代码虽然没有明确指定类型&#xff0c;但是会在编译的…

APK反编译的那些事

谷歌对dex文件的介绍&#xff1a;常量数组/字符串 DEX_FILE_MAGIC 是字节列表&#xff0c;这类字节必须出现在 .dex 文件的开头&#xff0c;以便系统将其原样识别。该值会特意包含一个换行符&#xff08;"\n" 或 0x0a&#xff09;和空字节&#xff08;"\0"…

单片机原理及接口技术期末复习知识点

第1章 单片机概述 什么是单片机&#xff1a;单片机是由CPU、存储器、I/O接口及总线集成在一个芯片上。简单了解AT89S51单片机简介。 相当于MCS-51系列中的87C51&#xff0c;AT89S51芯片内4KB的Flash存储取代了87C51片内的4K的EPROM。 第2章 AT89S51单片机的内部结构 MCS-51单…

毫米波雷达系统性能参数分析

毫米波雷达系统性能参数分析 1、距离2、速度3、角度 本文主要分析描述雷达系统的系统性能的一些参数&#xff0c;包括最大作用距离&#xff0c;距离分辨率&#xff0c;最大探测速度……等参数。通过理解这些参数的组成&#xff0c;能够帮助我们设计雷达系统参数。 1、距离 &a…

做UI设计要会什么知识?

做UI设计要会什么知识&#xff1f;在互联网这个行业里&#xff0c;要想做好一件事情&#xff0c;做得好是必须要懂产品&#xff0c;懂用户体验。在很多人眼中&#xff0c;做设计就是打杂&#xff0c;干不了&#xff0c;其实不是这样的。要想成为一名优秀的UI设计师&#xff0c;…

Django高级扩展之系统后台使用celery

如果我们在系统后台想某日某时执行某个任务&#xff0c;或者每隔一段时间执行某个任务&#xff0c;可以使用celery来完成。 目录 安装 安装celery 安装django_celery_beat celery配置 注册应用 celery配置 修改__init__.py 表迁移 执行迁移 控制台运行截图 新增数据…

gunicorn不停服重启更新服务

简介 Gunicorn是基于unix系统&#xff0c;被广泛应用的高性能的Python WSGI HTTP Server。用来解析HTTP请求的网关服务。 它通常是在进行反向代理&#xff08;如nginx&#xff09;&#xff0c;或者进行负载均衡&#xff08;如 AWS ELB&#xff09;和一个web 应用&#xff08;比…

AI + 算力 = “最强龙头”?

随着人工智能技术的飞速发展&#xff0c;“AI算力”的结合应用已成为科技行业的热点话题&#xff0c;甚至诞生出“AI算力最强龙头“的网络热门等式。该组合不仅可以提高计算效率&#xff0c;还可以为各行各业带来更强大的数据处理和分析能力&#xff0c;从而推动创新和增长。 …

Java项目-SpringBoot+Vue 的学生就业管理信息系统

&#x1f495;&#x1f495;作者&#xff1a;程序员徐师兄 个人简介&#xff1a;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&…

小航助学2023年6月GESP_C++三级试卷(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 单选题2.0分 删除编辑附件图文 答案:D 第1题高级语言编写的程序需要经过以下&#xff08; &#xff09;操作&#xff0c;可以生成在…

geo-tool 解析百度经纬出错 {‘status‘: 240, ‘message‘: ‘APP 服务被禁用‘}

geo-tool 解析百度经纬出错 {status: 240, message: APP 服务被禁用} 引子一、查错二、排错三、测试通过参考 作者&#xff1a;高玉涵 时间&#xff1a;2023.6.25 环境&#xff1a;Windows 10 专业版 22H2&#xff0c;Python 3.10.4 第三方包&#xff1a;geo-tool 1.1.2 引…

【模拟CMOS集成电路】HSPICE入门仿真分析实例

【模拟CMOS集成电路】HSPICE入门仿真分析实例 一、采用HSPICE的MOS器件仿真二、INV倒相器HSPICE仿真附录程序源码&#xff08;一&#xff09;程序源码&#xff08;二&#xff09; 一、采用HSPICE的MOS器件仿真 一、采用HSPICE的MOS器件仿真, 并回答以下问题。   1&#xff0…

Visual Studio 2019使用详解

VS2019&#xff08;Visual Studio 2019&#xff09;是由微软开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发各种应用程序&#xff0c;包括桌面应用程序、Web应用程序、移动应用程序等。 对工具的熟悉程度有助于提升开发效率&#xff0c;磨刀不误砍柴功&am…

solr快速上手:整合spring-data-solr实现客户端操作(十)

0. 引言 前一章介绍了官方的solr客户端SolrJ&#xff0c;但是solrJ的使用相对来说并不方便&#xff0c;仍然需要做一些负责的客户端操作以及语句的书写&#xff0c;有没有更加方便的ORM框架呢&#xff0c;这就提到了spring-data-solr了 1. 简介 首先如果你还不知道spring-da…

面试题:深拷贝和浅拷贝(+内存图)

深拷贝和浅拷贝主要是针对对象的属性是对象&#xff08;引用类型&#xff09; 一、基本类型和引用类型的区别 1&#xff09;、基本类型&#xff1a;就是值类型&#xff0c;即在变量所对应的内存区域存储的是值。 2&#xff09;、引用类型&#xff1a;就是地址类型。 何为地…

Kubeadm 部署k8s实现并且演示滚动不停服务更新

1. 环境准备 在开始之前&#xff0c;部署Kubernetes集群机器需要满足以下几个条件&#xff1a; 一台或多台机器&#xff0c;操作系统 CentOS7.x-86_x64&#xff1b;硬件配置&#xff1a;2GB或更多RAM&#xff0c;2个CPU或更多CPU&#xff0c;硬盘30GB或更多&#xff1b;集群中…