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

news2025/1/9 14:40:05

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

在这里插入图片描述

下面是PTA的OJ平台

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

题目汇总

  • 题解
    • L2-008 最长对称子串
    • L2-009 抢红包
    • L2-010 排座位
    • L2-011 玩转二叉树
  • 写在最后

题解

L2-008 最长对称子串

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。

输入格式:
输入在一行中给出长度不超过1000的非空字符串。

输出格式:
在一行中输出最长对称子串的长度。

输入样例:
Is PAT&TAP symmetric?
输出样例:
11

AC代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	getline(cin,s);
	int ans,tmp,len=s.size();
	ans=tmp=0;
	for(int i=0;i<len;i++)
	{
		tmp=1;
		for(int j=1;j<len;j++)
		{
			if(i-j<0||i+j>=len||s[i-j]!=s[i+j])
				break;
			tmp+=2;
		}
		ans=max(ans,tmp);
		tmp=0;
		for(int j=1;j<len;j++)
		{
			if(i-j+1<0||i+j>=len||s[i-j+1]!=s[i+j])
				break;
			tmp+=2;
		}
		ans=max(ans,tmp);	
		
		
	}
	cout<<ans<<endl;
}

L2-009 抢红包

没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。

输入格式:
输入第一行给出一个正整数N(≤10
4
),即参与发红包和抢红包的总人数,则这些人从1到N编号。随后N行,第i行给出编号为i的人发红包的记录,格式如下:

KN
1

P
1

⋯N
K

P
K

其中K(0≤K≤20)是发出去的红包个数,N
i

是抢到红包的人的编号,P
i

(>0)是其抢到的红包金额(以分为单位)。注意:对于同一个人发出的红包,每人最多只能抢1次,不能重复抢。

输出格式:
按照收入金额从高到低的递减顺序输出每个人的编号和收入金额(以元为单位,输出小数点后2位)。每个人的信息占一行,两数字间有1个空格。如果收入金额有并列,则按抢到红包的个数递减输出;如果还有并列,则按个人编号递增输出。

输入样例:
10
3 2 22 10 58 8 125
5 1 345 3 211 5 233 7 13 8 101
1 7 8800
2 1 1000 2 1000
2 4 250 10 320
6 5 11 9 22 8 33 7 44 10 55 4 2
1 3 8800
2 1 23 2 123
1 8 250
4 2 121 4 516 7 112 9 10
输出样例:
1 11.63
2 3.63
8 3.63
3 2.11
7 1.69
6 -1.67
9 -2.18
10 -3.26
5 -3.26
4 -12.32

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=10005;
struct node{
	int id,cnt;
	double income;
};
node ns[N];
bool cmp(node a,node b)
{
	if(a.income!=b.income)
		return a.income>b.income;
	if(a.cnt!=b.cnt)
		return a.cnt>b.cnt;
	return a.id<b.id;
}
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int k;
		cin>>k;
		ns[i].id=i;
		while(k--)
		{
			int a,b;
			cin>>a>>b;
			ns[a].income+=b;
			ns[a].cnt++;
			ns[i].income-=b;
		}
	}
	sort(ns+1,ns+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		cout<<ns[i].id<<" ";
		printf("%.2lf\n",ns[i].income/100);
	}
}

L2-010 排座位

布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。

输入格式:
输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系,其中关系为1表示是朋友,-1表示是死对头。注意两个人不可能既是朋友又是敌人。最后K行,每行给出一对需要查询的宾客编号。

这里假设朋友的朋友也是朋友。但敌人的敌人并不一定就是朋友,朋友的敌人也不一定是敌人。只有单纯直接的敌对关系才是绝对不能同席的。

输出格式:
对每个查询输出一行结果:如果两位宾客之间是朋友,且没有敌对关系,则输出No problem;如果他们之间并不是朋友,但也不敌对,则输出OK;如果他们之间有敌对,然而也有共同的朋友,则输出OK but…;如果他们之间只有敌对关系,则输出No way。

输入样例:
7 8 4
5 6 1
2 7 -1
1 3 1
3 4 1
6 7 -1
1 2 1
1 4 1
2 3 -1
3 4
5 7
2 3
7 2
输出样例:
No problem
OK
OK but…
No way

AC代码:

#include<bits/stdc++.h>
using namespace std;
int f[101]={0};
int isf(int x)
{
	if(f[x]==x)
		return x;
	else
	{
		f[x]=isf(f[x]);
		return f[x];
	}
}
int main()
{
	int n,m,k;
	int a,b,c;
	int e[101][101]={0};
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
		f[i]=i;
	for(int i=1;i<=m;i++)
	{
		cin>>a>>b>>c;
		e[a][b]=e[b][a]=c;
		if(c==1)
		{
			a=isf(a);
			b=isf(b);
			if(a!=b)
				f[a]=b;
		}
	}
	for(int i=1;i<=k;i++)
	{
		cin>>a>>b;
		if(e[a][b]==-1)
		{
			if(isf(a)==isf(b))
				printf("OK but...\n");
			else
				printf("No way\n");
		}
		else
		{
			if(isf(a)==isf(b))
				printf("No problem\n");
			else
				printf("OK\n");
		}
			
	}
} 

L2-011 玩转二叉树

给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。

输入格式:
输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。

输出格式:
在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

输入样例:
7
1 2 3 4 5 6 7
4 1 3 2 6 5 7
输出样例:
4 6 1 7 5 3 2

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e2+10;
int in[N],pre[N],n;
struct node{
	int l,r;
}tree[N];

int build(int l1,int r1,int l2,int r2)
{
	if(l1>r1||l2>r2)
		return 0;
	int p=l1;
	while(in[p]!=pre[l2])
		p++;
	int len=p-l1;
	int root=pre[l2];
	tree[root].l=build(l1,p-1,l2+1,l2+len);
	tree[root].r=build(p+1,r1,l2+len+1,r2);
	return root;
}
vector<int>ans;

void bfs(int x)
{
	queue<int>que;
	que.push(x);
	while(!que.empty())
	{
		int root=que.front();
		que.pop();
		ans.push_back(root);
		int l=tree[root].l,r=tree[root].r;
		if(r)
			que.push(r);
		if(l)
			que.push(l);
	}
}


int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>in[i];
	for(int i=1;i<=n;i++)
		cin>>pre[i];
	build(1,n,1,n);
	bfs(pre[1]);
	
	
	for(int i=0;i<ans.size();i++)
	{
		cout<<ans[i];
		if(i!=ans.size()-1)
			cout<<" ";	
	}
}

写在最后

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

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

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

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

相关文章

【golang中的变量 全局/局部/4中声明】

目录 变量变量的分析1.变量的创建的四种形式1.1总结1.2第一种 var a int 声明1.3 第二种 var a string "XXXX" 初始化1.4第三种 var a "XXXX"1.5第四种 a : XXXX 2.一次性声明多个变量3.一次初始化多个变量3.1交换值 4.全局变量--局部变量5. 声明和初始化…

Kafka生产调优源码

一、Kafka硬件配置选择 1.1 场景说明 100 万日活&#xff0c;每人每天 100 条日志&#xff0c;每天总共的日志条数是 100 万 * 100 条 1 亿条。 1 亿/24 小时/60 分/60 秒 1150 条/每秒钟。 每条日志大小&#xff1a;0.5k - 2k&#xff08;取 1k&#xff09;。 1150 条/…

算法------排序算法------冒泡排序法

介绍 冒泡排序法又称交换排序法&#xff0c;原理是从第一个元素开始&#xff0c;比较相邻元素的大小&#xff0c;如大小顺序有误&#xff0c;则对调后再进行下一个元素的比较&#xff0c;一次扫描之后可以确保最后一个元素位于正确的位置。接下来进行的第二次扫描&#xff0c;…

SSMP整合案例(5) Spring Boot整合MyBatis-Plus实现条件查询

讲完条件查询 那么 我们整个数据层的代码就写完了 可以看到 我们之前的代码 查询语句都有一个 参数 QueryWrapper 这个就是查询条件 其实 我们可以直接这样写 QueryWrapper<book> Query new QueryWrapper<>(); bookDao.selectList(Query);QueryWrapper类需要手…

Spring加载后初始化的9种方式

本文来聊一下在spring中&#xff0c;当spring 容器启动后&#xff0c;我们有几种初始化操作的方式。 目录 Spring加载后初始化的几种方式 Component和Service加构造方法 ContextRefreshedEvent事件 代码如下&#xff1a; 输出结果&#xff1a; PostConstruct 注解 代码如…

基于骨骼关键点的动作识别(OpenMMlab学习笔记,附PYSKL相关代码演示)

一、骨骼动作识别 骨骼动作识别是视频理解领域的一项任务 1.1 视频数据的多种模态 RGB&#xff1a;使用最广&#xff0c;包含信息最多&#xff0c;从RGB可以得到Flow、Skeleton。但是处理需要较大的计算量 Flow&#xff1a;光流&#xff0c;主要包含运动信息&#xff0c;处理…

面向对象分析与设计 UML2.0 学习笔记

一、认识UML UML-Unified Modeling Language 统一建模语言&#xff0c;又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。 UML是在开发阶段&#xff0c;说明、可视化、构建和书写一个面向对象软件密集系统的制品的…

Hyper-V虚拟机在wifi环境下的外网连接配置

目录 什么是虚拟交换机管理器了解虚拟交换机中的三个概念通过无线网卡创建虚拟交换机遇到的问题wifi环境下虚拟机外网连接方法 前面我们已经安装好了Hyper-V虚拟机和liunx操作系统&#xff0c;但是我们没有给虚拟机配置网络&#xff0c;本来我以为是一件很简单的事情&#xff0…

【Spring Boot学习】怎么配置文件,配置文件有什么用

前言&#xff1a; &#x1f49e;&#x1f49e;今天我们依然是学习Spring Boot&#xff0c;这里我们会更加了解Spring Boot的知识&#xff0c;知道Spring Boot的配置文件是什么样子的。有什么用&#xff1f;怎么使用Spring Boot的配置文件。 &#x1f49e;&#x1f49e;路漫漫&a…

Apache James 同时开启25、587、465端口

前提&#xff1a; 可以参考如下两篇文章在window或者linux上&#xff0c;先部署好Apache James Apache James邮件服务器搭建&#xff08;linux&#xff09;_Steven-Russell的博客-CSDN博客 Apache James邮件服务器搭建&#xff08;windows&#xff09;_Steven-Russell的博客…

Qt6.2教程——6.QT常用控件QLineEdit

一&#xff0c;QLineEdit简介 QLineEdit是Qt库中的一个控件&#xff0c;它提供了一个单行的文本输入框。用户可以在这个输入框中输入和编辑文本。它可以设置占位符文本&#xff08;Placeholder Text&#xff09;&#xff0c;当QLineEdit为空的时候显示这个占位符文本。它还可以…

JDK8新特性之方法引用【 ::】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于方法引用的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.是什么 二.为什么要用 三.什么时候…

chrome录制保存网络请求

有时候&#xff0c;需要与同事共同查看网络请求&#xff0c;但是现场往往环境限制&#xff0c;导致无法访问环境。在这里推荐一种利用chrome保存网络请求的方法。 准备&#xff1a; 1. chrome浏览器&#xff08;最好版本号是62以上&#xff09; chrome浏览器越新越好(最新稳定…

rsarsa

数学很酷&#xff01;使用RSA算法对秘密消息进行解码&#xff0c;c&#xff0c;p&#xff0c;q&#xff0c;e是RSA算法的参数。 RSA算法还不太了解&#xff0c;经过这段时间的学习&#xff0c;得知 q和p是最开始选择的两个质数&#xff0c;主要是为了计算出钥匙n e是在1到φ(n)…

服务器编程:数据库连接池

引言&#xff1a; 数据库连接池和线程池的思想一样&#xff0c;是为了避免频繁创建和销毁数据库连接导致的性能开销。如果一个项目频繁的需要访问数据库&#xff0c;那么它就有可能需要频繁的创建/销毁数据库连接&#xff0c;那么我们可以采用数据库连接池的技术&#xff0c;在…

Docker中搭建RabbitMQ集群

Docker中搭建RabbitMQ集群 1、启动三个RabbitMQ容器2、为容器设置节点2.1、设置Erlang Cookie2.2、设置节点12.3、设置节点22.4、设置节点32.5、预览结果 3、配置镜像队列3.1、配置镜像的原因3.2、搭建步骤 1、启动三个RabbitMQ容器 服务器IP端口hostname管理界面地址192.168.…

IoC容器的设计(利用反射、注解和工厂模式实现)

1.实验要求 利用注解、反射和工厂模式设计一个简单的IoC容器该IoC容器包含3个注解和一个IoC容器类&#xff08;AnnotationConfigApplicationContext&#xff09;&#xff0c;其定义如下&#xff1a; 注解&#xff1a; 注解含义Component标注BeanAutowired标注需要被注入的对…

如何写好一份企业直播主题策划?

写一份好的直播主题策划&#xff0c;需要考虑包括目标受众、目的、内容、形式、互动等&#xff0c;下面是写企业直播主题策划的一些关注点&#xff0c;希望能帮到您。 定位您直播的目标受众 明确你的直播主题适合的目标受众是谁&#xff0c;他们的兴趣、需求和期望是什么。了解…

OAuth2,jwt,springsecurity之间的区别和联系

OAuth 2.0、JWT (JSON Web Token) 和 Spring Security 是安全相关的概念和技术&#xff0c;它们有着不同的功能和用途。 OAuth 2.0&#xff08;开放授权&#xff09;&#xff1a; OAuth 2.0 是一种授权框架&#xff0c;用于授权第三方应用程序访问用户资源&#xff0c;而无需共…