csp第四次模测

TT数鸭子

在这里插入图片描述在这里插入图片描述

解题思路

对于这个问题,简单来说就是求一个数中不同数字的个数,输出那些不同数字个数小于k的所有数字个数,并且不同的数字个数最大为10,所以当k大于10时,所有的数字都满足要求,直接输出n即可,其是这道题不难,当时我在讨论k大于10时,直接输出n,而没有将其余的n个数字进行输出,从而re,痛失好几十分

代码

#include<iostream>
#include<stdio.h>
using namespace std;
long long int alln[1000010];
int main()
{
	int n,k;
	cin>>n>>k;
	if(k>10)
	{//k>10 都满足,输出n
		for(int i=0;i<n;i++)
			scanf("%lld",&alln[i]);
		cout<<n<<endl;
	}
	else if(k==1)
	{
		for(int i=0;i<n;i++)
			scanf("%lld",&alln[i]);
		cout<<"0"<<endl;	//k=1所以都不满足,输出0
	} 	
	else
	{
		for(int i=0;i<n;i++)
			scanf("%lld",&alln[i]);
		int a[10],ans=0;
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<10;j++)
				a[j]=0;
			while(alln[i]>=10)
			{
				int temp=alln[i]%10;
				a[temp]++;//找到一个数的每一位
				alln[i]/=10;
			}
			a[alln[i]]++;
			int flag=0;
			for(int j=0;j<10;j++)
			{
				if(a[j]!=0)
					flag++; 
			}
			if(flag<k)//判断不同数字个数是否小于k
				ans++;	
		}
		cout<<ans<<endl;
	}
	return 0;
 }

ZJM要抵御宇宙射线

在这里插入图片描述在这里插入图片描述在这里插入图片描述

解题思路

对于这个题,由于n的数据范围不是很大,我们可以枚举每一个点,然后对于每一个点,遍历其余所有的点,找到其与最远点的距离作为以该点为圆心的半径,然后对于每一个点都这样做,然后根据题目要求进行排序,输出排序后数组的第一个元素,复杂度是n^2,是可行的。对于这个题,半径是大于int的范围的,所以要用long long来存,当时少写了一个long long,痛失几十分。

代码

#include<iostream>
#include<cmath>
#include<algorithm>
#include <iomanip>
using namespace std;
struct point{
	long long int x,y,rad;//一个点的坐标,以这个点为圆心的半径
	bool operator < (const point p)const{//重载小于号
		if(rad!=p.rad)
			return rad<p.rad;
		else if(x!=p.x)	
			return x<p.x;
		else 
			return y<p.y;
	}
	point()
	{
		x=y=0;
		rad=-1;
	}
};
point allp[1010];
int n;
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>allp[i].x>>allp[i].y;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{//枚举每一个点
			if(i!=j)
			{
				long long int temp=pow(allp[i].x-allp[j].x,2)+pow(allp[i].y-allp[j].y,2);
				if(temp>allp[i].rad)
					allp[i].rad=temp;
			}
		}
	}
	sort(allp,allp+n);//排序后输出第一个元素
	cout<<allp[0].x<<".00 "<<allp[0].y<<".00"<<endl;
	cout<<allp[0].rad<<".00";
	return 0;
 }

宇宙狗的危机

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

解题思路

对于这个题,本以为是利用二叉搜索树来解,但是由于输入的数据是有序的,看了大佬的解法原来这是一道区间dp。
首先使用一个二维数组f[i][j]来表示区间[i,j]的数字能否组成一个合法的二叉搜索树,如果可以,则为1,。则最后的结果就判断f[1][n]是否为1即可。使用一个二维数组l[i][j]表示以j对应的数为根,j的左子树为到i的数,这样的二叉搜索树是否存在,使用一个二维数组r[i][j]表示以i对应的数为根,i的右子树为到j的数,这样的二叉搜索树是否存在。还用了一个数组com[i][j],来表示点i和j所对应的数的gcd是否大于1,如果大于1,该值为1,否则为0。然后进行状态转移,一共进行三层循环,第一层为所有点,第二层为区间的左端点和右端点,第三层是枚举的根节点,在左端点和右端点之间。如果l[a][k]=1并且r[k][b]=1,那么区间[a,b]一定可以组成一个二叉搜索树。如果此时com[k][a-1]为1,那么k可以做a-1的右孩子,则r[a-1][b]=1,同理,如果com[k][b+1]为1,那么k可以做b+1的左孩子,则l[a][b+1]=1。

代码

#include<iostream>
#include<string.h>
using namespace std;
int gcd(int a,int b)
{//计算gcd
	return b==0?a:gcd(b,a%b);
} 
int alln[710],com[710][710],l[710][710],r[710][710],f[710][710];
int main()
{
	int T;
	cin>>T;
	for(int t=0;t<T;t++)
	{
		int n;
		cin>>n;
		memset(l,0,sizeof(l));
		memset(r,0,sizeof(r));
		memset(f,0,sizeof(f));
		memset(com,0,sizeof(com));
		for(int i=1;i<=n;i++)
		{
			cin>>alln[i];
			l[i][i]=r[i][i]=1;//初始化
		}
			
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				int te=gcd(alln[i],alln[j]);
				if(te>1)//计算每两个数的gcd
					com[i][j]=1;
			}
		}
		for(int i=1;i<=n;i++)
		{//枚举所有数
			for(int l1=1,r1=l1+i-1;r1<=n;l1++,r1++)
			{//枚举左右区间
				for(int k=l1;k<=r1;k++)
				{//枚举区间中的根
					if(l[l1][k]==1&&r[k][r1]==1)
					{//如果k为根可行,则更新
						f[l1][r1]=1;
						if(com[k][l1-1])
							r[l1-1][r1]=1;//k为l1-1的右孩子可行
						if(com[k][r1+1])
							l[l1][r1+1]=1;//k为r+1的左孩子可行
					}
				}
			}
		}
		if(f[1][n]==1)
			cout<<"Yes"<<endl;
		else
			cout<<"No"<<endl;
	}
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
### 回答1: CSP-J 第二轮考试的考点包括: 1. 数据结构:二叉树、图、堆、并查集等。 2. 算法:排序、查找、回溯、动态规划等。 3. 计算机网络:TCP/IP 协议、HTTP 协议、DNS 协议等。 4. 操作系统:进程、线程、死锁、虚拟内存等。 5. 计算机组成原理:CPU、内存、I/O 设备等。 6. 数据库:SQL、数据模型、数据库设计等。 7. 编程语言:Java、C++、Python 等。 这些考点是 CSP-J 第二轮考试的主要内容,具体考试内容以官方通知为准。 ### 回答2: CSP-J(中国计算机软件能力认证)是中国计算机技术职业资格认证中的一个项目,第二轮考试主要是针对Java语言的能力测试。在CSP-J第二轮考试中,主要有以下几个考点: 1. Java语言基础知识:包括Java的语法、关键字、标准类库等方面的知识点。考察学员对Java基本语法的掌握程度和使用能力。 2. 面向对象编程:考察学员对面向对象编程思想的理解和应用能力,包括类的定义、继承、多态、封装等方面的知识。 3. Java核心类库:考察学员对Java核心类库的熟悉程度和使用能力,包括集合类、IO操作、线程、异常处理等方面的知识。 4. 数据库操作:考察学员对Java语言与数据库的交互能力,包括对SQL语句的理解、数据库连接的建立、数据查询与更新等方面的知识。 5. 网络编程:考察学员对Java网络编程的理解和应用能力,包括TCP/IP协议、Socket编程、HTTP协议等方面的知识。 6. 设计模式:考察学员对常用设计模式的理解和应用能力,包括单例模式、工厂模式、观察者模式等方面的知识。 以上是CSP-J第二轮考试的主要考点,通过考试可以评估学员在Java语言方面的能力水平。为了取得优异的成绩,建议学员在这些考点上进行充分的准备和学习。 ### 回答3: CSP-J(程序设计能力全国联赛初级组)第二轮的考点相对于第一轮更加深入和复杂。以下是第二轮考点的介绍: 1. 数据结构:第二轮中,数据结构的考点是非常重要的。主要涉及树、图和其他常见数据结构,例如堆、栈和队列等。在这一部分,考生需要熟练掌握这些数据结构的特点、实现方法和应用场景。 2. 算法设计与分析:第二轮中,考生需要展示设计和分析高效算法的能力。这包括使用递归、贪心、动态规划、回溯、分治等算法思想解决问题的能力。考生需要对不同算法的时间复杂度和空间复杂度有较好的理解,并能够分析算法的优劣性。 3. 编程思维和技巧:在第二轮考试中,考生需要展示他们的编程思维和技巧。这包括对问题进行建模和抽象的能力,合理使用数据结构和算法的技巧,以及处理边界情况和异常情况的能力。 4. 综合应用题:第二轮的考试通常包含综合应用题,要求考生综合运用前面所学的知识解决实际问题。这类题目可能与现实生活中的问题相关,需要考生能够将问题转化为计算机程序,并给出正确有效的解决方案。 总体而言,CSP-J第二轮考点更加深入和复杂,需要考生具备扎实的数据结构和算法基础,以及良好的编程能力和解决问题的思维能力。需要进行更多的实践和练习,提升自己的编程水平和解题能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值