CSDN周赛第十期总结

news2025/2/23 21:33:08

文章目录

  • 竞赛概述
  • 题解
    • 熊孩子摆拜访问
      • 题目描述
      • 数据范围
      • 样例输入
      • 样例输出
      • 代码
    • 走楼梯
      • 题目描述
      • 输入描述
      • 输出描述
      • 样例输入 1
      • 样例输出 1
      • 代码
    • 括号上色
      • 输入描述:
      • 输出描述:
      • 输入样例:
      • 输出样例:
      • 代码
    • 喜水青蛙
      • 题目描述
      • 输入描述:
      • 输出描述:
      • 输入样例:
      • 输出样例:
      • 代码
  • 总结

竞赛概述

在这里插入图片描述

CSDN编程竞赛第十期:比赛详情

本场竞赛由「电子工业出版社 & CSDN」联合主办在这里插入图片描述
题目总体难度较高,前两题比较基础,第二题我在之前的博客中写过类似题题解。后两题是竞赛题,但做过的类似的应该可以很快a掉。

题解

由于比赛无法保存题目及代码,以下题解代码均为现在写的,题目是在网上找的回忆版,可能会有问题。

熊孩子摆拜访问

题目描述

已知存在一个长度为n的整数序列A,A中所有元素按照从小到大排序,现在执行倒置一段序列。请你找出A序列的倒置子序列。如果没有,输出“0 0”。

数据范围

1<=n<=1000

1<=num<=10000

样例输入

4

1 3 2 4

样例输出

2 3

代码

#include<stdio.h>

void quicksort(int *a,int left,int right)
{
	if(left>right)
	{
		return ;
	}
	int i=left;
	int j=right;
	int key=a[left];
	while(i!=j)
	{
		while(a[j]>=a[left]&&i<j)
		{
			j--;
		}
		while(a[i]<=a[left]&&i<j)
		{
			i++;
		}
		int s;
		s=a[i];
		a[i]=a[j];
		a[j]=s;
	}
	a[left]=a[i];
	a[i]=key;
	quicksort(a,left,i-1);
	quicksort(a,i+1,right);
}

int main(){
	int a[100000],b[100000];
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&a[i]);
		b[i] = a[i];
	}
	quicksort(b,0,n-1);
	int left = 0,right = 0;
	for(int i=0;i<n;i++){
		if(b[i]!=a[i]&&!left){
			left = i+1;
		}
		if(b[i]!=a[i]&&left!=0){
			right = i+1;
		}
	}
	printf("%d %d",left,right);
}

走楼梯

题目描述

楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。

输入描述

一个数字,楼梯数。

输出描述

输出走的方式总数。

样例输入 1

4

样例输出 1

5

代码

递归

#include<stdio.h>

int step(int n){
	if(n == 1 || n == 2){
		return n;
	}else{
		return step(n-1) + step(n-2);
	}
}

int main(){
	int n;
	scanf("%d",&n);
	printf("%d",step(n));
	return 0;
}

这题没多少印象,但是印象里递归好像有测试点过不去,会超时,再补一个动态规划的题解。

动态规划

#include<stdio.h>


int main(){
	int n;
	scanf("%d",&n);
	int res[n+1];
	res[0] = 0;
	res[1] = 1;
	res[2] = 2;
	if(n<=3)
	{
		printf("%d",n);
		return 0;
	}
	for(int i=3;i<=n;i++)
	{
		res[i]=res[i-1]+res[i-2];
	}
	printf("%d",res[n]);
	return 0;
}

括号上色

小艺酱又得到了一堆括号。
括号是严格匹配的。
现在给括号进行上色。
上色有三个要求:
1、只有三种上色方案,不上色,上红色,上蓝色。
2、每对括号只有一个上色。
3、相邻的两个括号不能上相同的颜色,但是可以都不上色。
问括号上色有多少种方案?答案对1000000007取模。

输入描述:

输入括号序列s。(2<=|s|<=700)

输出描述:

输出方案数。

输入样例:

(())

输出样例:

12

代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define LL long long
const int mod=1000000007;

char s[1000];
int q[1000];
int mp[1000]={0};
int tot=1;
LL dp[1000][1000][3][3]={0};
int vis[1000][1000]={0};

int dfs(int L, int R)
{
	if(vis[L][R])
	{
		return 0;
	}
	vis[L][R]=1;
	if(R-L==1)
	{
		dp[L][R][1][0]=1, dp[L][R][2][0]=1;
		dp[L][R][0][1]=1, dp[L][R][0][2]=1;
		return 0;
	}
	if(mp[L]==R)
	{
		dfs(L+1, R-1);
		for(int u=0;u<3;u++)
		{
			for(int v=0;v<3;v++)
			{
				for(int x=0;x<3;x++)
				{
					for(int y=0;y<3;y++)
					{
						if((u==0||v==0)&&(u!=0||v!=0)&&(u!=x||u+x==0)&&(v!=y||v+y==0))
						{
							dp[L][R][u][v]+=dp[L+1][R-1][x][y], dp[L][R][u][v]%=mod;
						}
					}
				}
			}
		}
	}
	else
	{
		dfs(L, mp[L]); dfs(mp[L]+1, R);
		for(int u=0;u<3;u++)
		{
			for(int v=0;v<3;v++)
			{
				for(int x=0;x<3;x++)
				{
					for(int y=0;y<3;y++)
					{
						if((u==0||v==0)&&(u!=0||v!=0)&&(v!=x||v==0&&x==0))
						{
							dp[L][R][u][y]+=dp[L][mp[L]][u][v]*dp[mp[L]+1][R][x][y], dp[L][R][u][y]%=mod;
						}
					}
				}
			}
		}
	}
	
}

int main()
{
	int len,ans = 0;
	scanf("%s",s+1);
	len = strlen(s+1);
	for(int i=1;i<=len;i++)
	{
		if(s[i]=='(')
		{
			q[tot++]=i;
		}
		else
		{
			mp[q[--tot]]=i;
		}
	}
	dfs(1, len);
	for(int u=0;u<3;u++)
	{
		for(int v=0;v<3;v++)
		{
			ans+=dp[1][len][u][v], ans%=1000000007;
		}
	}
	printf("%d",ans);
	return 0;
}



喜水青蛙

题目描述

总是喜欢在水里嬉戏的青蛙,某天要过河拜访一位朋友。
已知河道中长满了带刺的不知名生物,能通过的路只有一条直线,长度为L。
直线上随机分布着m块石头。青蛙的最小跳跃距离是s,最大跳跃距离是t。
青蛙想要尽可能的少踩石头,那么它通过河道最少会踩到多少石头?

输入描述:

多组数据输入,其中每组数据:
第一行输入1个整数L(1<=L<=1e9)。
第二行输入3个整数:s、t、m(1<=s<=t<=10,1<=m<=100)。
第三行输入m个不同的整数,表示m个石子在数轴上的分布位置。
每行所有相邻整数用空格隔开。

输出描述:

输出青蛙过河最少会踩到的石子数量,
每组输入数据对应的输出结果单独成行。

输入样例:

10
2 3 5
2 3 5 6 7

输出样例:

2

代码

#include<stdio.h>

int min(int x, int y)
{
	return x<y?x:y;
}

int gcd(int x,int y){
	if(y==0)return x;
	return gcd(y,x%y);
}

int lcm(int x, int y){
	return x*y/gcd(x,y);
}

void quicksort(int *a,int left,int right)
{
	if(left>right)
	{
		return ;
	}
	int i=left;
	int j=right;
	int key=a[left];
	while(i!=j)
	{
		while(a[j]>=a[left]&&i<j)
		{
			j--;
		}
		while(a[i]<=a[left]&&i<j)
		{
			i++;
		}
		int s;
		s=a[i];
		a[i]=a[j];
		a[j]=s;
	}
	a[left]=a[i];
	a[i]=key;
	quicksort(a,left,i-1);
	quicksort(a,i+1,right);
}

int main(){
	int l,s,t,m;
	int a[101],b[101],f[20000],flag[20000];
	scanf("%d %d %d %d",&l,&s,&t,&m);
	int k=lcm(s,t);
	for(int i=1;i<=m;i++)scanf("%d",&a[i]);
	if(s==t){
		int sum=0;
		for(int i=1;i<=m;i++)if(a[i]%s==0)sum++;
		printf("%d",sum);
		return 0;
	}
	a[m+1]=l;
	quicksort(a,0,m+1);
	for(int i=1;i<=m+1;i++){
		if(a[i]-a[i-1]>=2*k)b[i]=(a[i]-a[i-1])%k+k;
		else b[i]=a[i]-a[i-1];
	}
	for(int i=1;i<=m+1;i++){
		a[i]=a[i-1]+b[i];
		flag[a[i]]=1;
	}
	flag[a[m+1]]=0;
	for(int i=1;i<=a[m+1]+t+1;i++){
		f[i]=0x3fffffff;
		for(int j=s;j<=min(i,t);j++){
			f[i]=min(f[i],f[i-j]+flag[i]);
		}
	}
	printf("%d",f[a[m+1]+t+1]);
	return 0;
}

总结

这次周赛有点属于拼手速的,看完就得开始写,最后能取得第二名的好成绩还是很不错的,希望下次继续进步吧,也希望csdn越办越好。
在这里插入图片描述

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

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

相关文章

spark3.0.2搭建教程

spark3.0.2搭建教程 spark3.0.2安装教程 文章目录spark3.0.2安装教程一、前期准备二、spark搭建&#xff08;一&#xff09;搭建1、将spark上传到虚拟机上2、解压安装包&#xff08;二&#xff09;、standalone&#xff08;独立部署&#xff09;模型1、修改配置文件&#xff0…

学生HTML静态网页基础水平制作DIV+CSS+JavaScript技术制作美食网页——美食城6页面

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

高等数学(第七版)同济大学 习题10-2(前10题) 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-2&#xff08;前10题&#xff09; 函数作图软件&#xff1a;Mathematica 1.计算下列二重积分:\begin{aligned}&1. \ 计算下列二重积分:&\end{aligned}​1. 计算下列二重积分:​​ (1)∬D(x2y2)dσ&#xff0c;…

【构建ML驱动的应用程序】第 7 章 :使用分类器编写推荐

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

动态内存管理❀C

目录❀动态内存管理的意义❀动态内存管理函数malloc - 申请空间free - 释放空间calloc - 申请空间realloc - 调整空间大小❀常见的动态内存错误对NULL指针的解引用操作 - err对动态开辟空间的越界访问 - err对非动态开辟内存使用free释放 - err使用free释放一块动态开辟内存的一…

Pycharm安装配置Pyside6

PySide6是在Python环境下的一套Qt6 API库。使用PySide6可以轻松创建基于Qt6的GUI程序&#xff1b;PySide6由Qt官方维护。 1. Pyside6的安装&#xff1a; 直接安装在原python上面&#xff0c;在cmd里运行&#xff1a;(网速慢使用阿里源源) pip3 install Pyside6 -i https://p…

网络安全——逻辑漏洞之越权漏洞

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

高通导航器软件开发包使用指南(8)

高通导航器软件开发包使用指南&#xff08;8&#xff09;7 电子速度控制器7.1 ESC固件更新7.1.1相关参数说明7.1.3在初始化期间启用更新7.1.4固件配置7.1.5固件从版本7.1.6更新程序7 电子速度控制器 7.1 ESC固件更新 高通公司Navigator支持ESC固件更新&#xff0c;无需连接或…

2022亚太C题详细思路

2022年亚太今日已经正式开赛&#xff0c;为了帮助大家更好的选题建模&#xff0c;这里首先对ABC三道题目进行浅要评析&#xff0c;以方便大家更好的择题。同时相关资料也会后续进行补充。预计明日公布各题统计选题人数以及较为完善的资料。今天作为第一天重要的是择好题&#x…

Tableau阈值设置及其使用

阈值又叫临界值&#xff0c;是指一个效应能够产生的最低值或最高值。 ——百度百科 文章目录前言一、案例中阈值的使用背景介绍二、设置阈值参数三、颜色区分四、可筛选设置总结前言 介绍Tableau阈值的设置&#xff0c;供各位小伙伴参考。本文案例来源于Tableau自带示例工作薄…

mysql 数据备份与恢复使用详解

一、前言 对一个运行中的线上系统来说&#xff0c;定期对数据库进行备份是非常重要的&#xff0c;备份不仅可以确保数据的局部完整性&#xff0c;一定程度上也为数据安全性提供了保障&#xff0c;设想如果某种极端的场景下&#xff0c;比如磁盘损坏导致某个时间段数据丢失&…

冒泡排序法

目录 一、问题 二、冒泡排序的思想 三、举例 四、算法分析 五、代码实现 一、问题 现有一个整型数组&#xff08;乱序&#xff09;&#xff0c;并且写一个函数&#xff08;Sort&#xff09;对数组进行排序&#xff0c;顺序要求升序。 二、冒泡排序的思想 两两相邻的元素…

【100个 Unity实用技能】 | Unity自定义脚本的初始模版

Unity 小科普 老规矩&#xff0c;先介绍一下 Unity 的科普小知识&#xff1a; Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

java每日一练(2)

java每日一练(2) 单选部分 1.A 派生出子类 B &#xff0c; B 派生出子类 C &#xff0c;并且在 java 源代码有如下声明&#xff1a; A a0new A();A a1new B();A a2new C(); 问以下哪个说法是正确的&#xff08;&#xff09; A 只有第一行能通过编译 B 第1、2行能通过编译&…

【Servlet】6:一篇文章搞懂Servlet对象的相互调用、数据共享

目录 | 请求对象和响应对象 生命周期 | Servlet之间的相互调用 Servlet调用 基本概述 重定向Servlet调用 请求转发Servlet调用 | Servlet之间的数据共享 Servlet数据共享 基本概述 ServletContext接口 数据共享 Cookie类 数据共享 HttpSession接口 数据共享 HttpServletRequest…

2022亚太A题赛题分享

序列图像特征提取及模具熔融结晶建模分析 连铸过程中的模具通量对钢半月板进行热绝缘&#xff0c;防止液态钢连铸过程中液态钢再氧化&#xff0c;控制传热&#xff0c;提供链润滑&#xff0c;吸收非金属夹杂物。模具通量的冶金功能主要由温度控制曲线下的熔化速率和结晶速率决定…

【论文简述及翻译】MVSNet:Depth Inference for Unstructured Multi-view Stereo(ECCV 2018)

一、论文简述 1. 第一作者&#xff1a;Yao Yao 2. 发表年份&#xff1a;2018 Oral 3. 发表期刊&#xff1a;ECCV 4. 关键词&#xff1a;MVS、端到端网络、代价体、深度图、可微分单应变换 5. 探索动机&#xff1a;传统方法存在一些常见的局限性&#xff0c;很难处理场景的…

1100亩烟台深耕水稻 国稻种芯·中国水稻节:山东盐碱地水稻

1100亩烟台深耕水稻 国稻种芯中国水稻节&#xff1a;山东盐碱地水稻 &#xff08;YMG全媒体记者 庞磊 通讯员 包刚先 李敏 摄影报道&#xff09;新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯中国水稻节 中国三农智库网-功能性农业…

LinuxHadoop环境

Hadoop环境Hadoop集群拓扑1、集群拓扑2、角色分配一、虚拟机安装二、虚拟机克隆1、克隆类型&#xff08;1&#xff09;完整克隆&#xff08;2&#xff09;链接克隆2、克隆步骤&#xff08;1&#xff09;克隆出master虚拟机&#xff08;2&#xff09;克隆出slave1虚拟机&#xf…