CSDN第13次竞赛题解与总结

news2024/11/17 21:51:22

前言

2022/12/7 CSDN第13次竞赛「人民邮电出版社 & CSDN」联合主办。

本次奖品为《计算之魂》:
系统地讲解了计算机科学的精髓,不仅有助于了解计算机科学,更有助于了解 IT 产业的技术特点、培养一些特殊的思维方式、掌握信息时代特殊的做事方法。
在这里插入图片描述说实话,这本书对我这个初中未毕业的蒟蒻用处不大,我只是想拿个定制帆布包(毕竟这东西我比较缺),所以慢慢调了一个多小时,结果没想到

在这里插入图片描述既然这本书与我这么有缘,我就勉为其难的摆在书架里吃灰吧

建议

还是和上次一样的,原题太多了。
19:00我准时打开了考试,结果一看第一题——陶陶摘苹果
作为一名刷完近二十年普及组题目的蒟蒻,这不是NOIP普及组原题吗?
于是19:01爆切T1
然后一看T2,似乎在哪做过,但又想不起来。
考完后百度一查原题在这
后两题不知道是不是原题,有找到的可以评论区回复。
还有就是这可恶的360跳出一个弹窗我就随手关了一下怎么就被判切出页面。了

题解

T1陶陶摘苹果

题意

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知 10 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

分析

签到题(毕竟是普及组第一题),这种题学过循环和条件分支的小学生都会做,搞不懂为什么那么多0分。

代码

#include<bits/stdc++.h>
using namespace std;
int n,ans,a[20];
int main(){
	for(int i=1;i<=10;i++) cin >> a[i];
	cin >> n; n += 30;
	for(int i=1;i<=10;i++)
		ans += a[i]<=n?1:0;
	cout << ans;
	return 0;
}

T2硬币的面值

题意

小A有n枚硬币,现在要买一样不超过m元的商品,他不想被找零,同时又不想带太多的硬币,且硬币可以重复,现在已知这n枚硬币的面值,请问最少需要多少枚硬币就能组合成所有可能(即能组合成1-m任意之间的数字)的价格?

分析

吐槽

拿洛谷月赛原题真的不会被kkk告侵权吗?
虽说这是一道原题,但最让人难堪的并不是这题有多难,而是这题不给数据范围
不过我考场上写的 O ( n m ) O(nm) O(nm)能过就说明这题并不像原题数据范围那么恶心(低情商:这题数据太水了)。
这里就用洛谷上 O ( n l o g n ) O(nlogn) O(nlogn)的算法给大家讲解, O ( n m ) O(nm) O(nm)的很好想这里就不提了。

思路

首先先排序。
先明确一点,如果不存在硬币面值为1则价格为1的就无法组成,直接特判No answer!!!
反之,只要有面值为1的,就能组成所有面额,这毕竟每个数都有因子1。

设当前可取 [ 1 , s u m ] [1,sum] [1,sum]的所有面额,且当前取了一个面额为 a a a 的硬币, a n s ans ans记录答案

容易证明,当 s u m > a − 1 sum> a-1 sum>a1时,再取这枚硬币,就能取到 [ 1 , s u m + a ] [1,sum+a] [1,sum+a]的所有面额,有兴趣的读者可以自己证明

那么我们只需将 s u m sum sum不断加 a a a,直到它大于下一枚硬币的面额,再将 a a a更新
不过这样常数比较大,有可能遇到 a i a_i ai a i + 1 a_{i+1} ai+1相差很大的情况,比如 n = 1 , a 1 = 1 n=1,a_1=1 n=1,a1=1,此时算法退化到 O ( m ) O(m) O(m),导致 a i a_i ai持续累加,所以我们可以直接用除法算出需累加几个 a a a,从而达到 O ( n ) O(n) O(n)的复杂度

最后有一种特殊情况,就是当最后跳出循环时 s u m = m − 1 sum=m-1 sum=m1,此时应特判输出 a n s + 1 ans+1 ans+1,因为还需一个1元硬币

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int a[201000];
int ans,sum;
signed main(){
	cin >> n >> m;
	for(int i=1;i<=n;i++) cin >> a[i];
	a[n+1] = m; sort(a+1,a+1+n);
	if(a[1] != 1){
		cout << "No answer!!!";
		return 0;
	}
	for(int i=1;i<=n;i++){
		if(sum < a[i+1]-1){
			int k = (a[i+1]-2-sum)/a[i]+1;
			sum += a[i]*k;
			ans += k;
			if(sum >= m){
				cout << ans;
				return 0;
			}
		}
	}
	cout << ans+1;
	return 0;
}

T3公司新表

题意

公司里为了凸显公司的特性。 安装了一个n进制表。 已知新的表的时间是”H:M”。 时间合法的定义为H<=23 &&M<=59。 时间有多少种进制定义的方式,依次打印出来。 如果有无数种解输出”-1”,不存在输出”0”。

分析

本题是一道纯模拟题,只需掌握怎么算k进制数,但细节很多,我也就调了四五十分钟
我们先考虑什么时候有无数个解,我刚开始以为只有00:00时有无数解,但实际上,因为 x 0 = 1 ( x ≠ 0 ) x^0=1(x ≠ 0) x0=1(x=0),所以k进制的末尾取值与k无关,这会导致类似于08:09,0B:0E这种也有无数个解,需特判
然后我们先找到 : : : 的位置,那么其左边就是题中的H,右边就是M,我们只需算出它们的值再判断是否符合题意即可
值得注意的是,我们还应考虑k的最小取值,举个例子12:23最小应是4进制,
0A:BC就至少是13进制,如果k小于这些值将发生近位,那么这个数就是不合法的
对于无解的情况,只需用一个变量记录是否有输出,若没有,就是无解

代码

分析完就容易实现了

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int c=2;
int main(){
	string s;
	cin >> s;
	bool flag = false;
	s = " "+s;
	unsigned int l = 0;
	for(unsigned int i=1;i<s.size();i++){
		if(s[i] == ':') l = i;
		else if(s[i] >= 'A') c = max(c,s[i]-'A'+11);
		else c = max(c,s[i]-'0'+1);
	}
	for(int i=c;i;i++){
		int base = 1,a = 0,b = 0;
		for(unsigned int j=l-1;j>=1;j--){
			if(isdigit(s[j])) a += base*(s[j]-'0');
			else a += base*(s[j]-'A'+10);
			base *= i;
		}
		base = 1;
		for(unsigned int j=s.size()-1;j>=l+1;j--){
			if(isdigit(s[j])) b += base*(s[j]-'0');
			else b += base*(s[j]-'A'+10);
			base *= i;
		}
		if(a<c && b<c && a<=23 && b <= 59){
		//注意当a>=24或b>=60时应判为无解
			cout << -1;
			return 0;
		}
		if(a > 23 || b > 59) break;
		flag = true; cout << i << " ";
	}
	if(!flag) cout << 0;
	return 0;
}

T4小豚鼠排排坐

题意

小艺酱买了一个由一排排格子组成的小房子nm,她想让k个小豚鼠每个小豚鼠都有自己的格子。
但是为了不浪费空间,她想要最边角的一圈2
(n+m-2)每行每列的格子都有一个小豚鼠居住。
具体来说,假设这k只小豚鼠的格子坐标为(x1, y1), (x2, y2),…,(xk, yk),则需要满足存在1<a,b,c,d<=k,使得xa =1, xb = n, yc = 1, yd = m (a, b, c, d可以重复).
小艺酱想知道自己有多少种方案安排小豚鼠。

分析

这题的题意有点乱第二段话我也看不是很懂
但一看数据范围 n , m ≤ 5 n,m\le5 n,m5这不就是一道 d f s dfs dfs模板题吗
对于每一个格子,要么选,要么不选,那我们用搜索枚举所有情况,再逐一判断是否成立,时间复杂度 O ( 2 n m ) O(2^{nm}) O(2nm)

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,k,ans;
int a[10][10];
bool chk(){//四个条件直接枚举判断
	bool flag = 0;
	for(int i=1;i<=n;i++)
		if(a[i][1] == 1){
			flag = 1;
			break;
		}
	if(!flag) return false;
	flag = 0;
	for(int i=1;i<=n;i++)
		if(a[i][m] == 1){
			flag = 1;
			break;
		}
	if(!flag) return false;
	flag = 0;
	for(int i=1;i<=m;i++)
		if(a[1][i] == 1){
			flag = 1;
			break;
		}
	if(!flag) return false;
	flag = 0;
	for(int i=1;i<=m;i++)
		if(a[n][i] == 1){
			flag = 1;
			break;
		}
	if(!flag) return false;
	return true;
}
void dfs(int x,int y,int z){
	if(z == k){
		ans += chk();
		return ;
	}
	if(x == n+1) y++,x=1;
	if(y == m+1) return;
	dfs(x+1,y,z);
	a[x][y] = 1;
	dfs(x+1,y,z+1);
}
int main(){
	cin >> n >> m >> k;
	dfs(1,1,0);
	cout << ans;
	return 0;
}

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

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

相关文章

开源web自定义表单有哪几个特点?

目前&#xff0c;市场正在蓬勃发展中&#xff0c;作为企业&#xff0c;采用传统表单的弊端也逐渐显现出来&#xff0c;面临比较大的问题就是办公效率得不到提升。在各行各业正积极筹备朝着数字化方向转型的背景下&#xff0c;采用开源web自定义表单可以弥补传统表单弊端&#x…

windows系统“彻底”隐藏任务栏

项目概况及目标 因某项目所需&#xff0c;要实现win10系统上任务栏的“彻底”隐藏。此处任务栏隐藏要求无键盘操作无法唤出。 方案一、任务栏设置 我们都知道&#xff0c;在任务栏设置中可以通过更改自动隐藏任务栏选项来实现任务栏的隐藏显示。 但是该方案的隐藏会在鼠标经…

论文速读系列一:VoteNet、CBGS、BirdNet、StarNet、STD

如有错误&#xff0c;恳请指出。 参考网上资料&#xff0c;对一些经典论文进行快速思路整理 文章目录1. VoteNet2. CBGS3. BirdNet4. StarNet5. STD参考网上资料&#xff0c;对一些经典论文进行快速思路整理 1. VoteNet paper&#xff1a;《Deep Hough Voting for 3D Object …

【正点原子FPGA连载】第三十章 基于OV5640的PL以太网视频传输实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第三十章 基于OV…

TextMeshPro源码移植-替换掉PackageManager

因为工作需要&#xff0c;使用类似美术字的效果 TextMeshPro支持各种效果&#xff0c;效能也可以&#xff08;到底这个可以到底是多可以&#xff0c;效率有多高&#xff0c;反正都是传说&#xff0c;哥也不知道&#xff09;&#xff0c;唯一缺点就是不支持多语言 只要你的项目…

Pandas使用手册

Pandas是一款快速&#xff0c;强大&#xff0c;灵活且易于使用的开源数据分析和操作工具&#xff0c; 建立在Python编程语言之上。 Pandas 前言Pandas是一款快速&#xff0c;强大&#xff0c;灵活且易于使用的开源数据分析和操作工具&#xff0c;建立在Python编程语言之上。 一…

[附源码]JAVA毕业设计食品销售网站(系统+LW)

[附源码]JAVA毕业设计食品销售网站&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

Pig4Cloud之登陆验证(一)客户端认证处理

前端登陆 handleLogin() {this.$refs.loginForm.validate(valid > {if (valid) {this.$store.dispatch("LoginByUsername", this.loginForm).then(() > {this.$router.push({path: this.tagWel.value});}).catch(() > {this.refreshCode();});}});}看一下L…

HTML制作一个汽车介绍网站【大学生网页制作期末作业】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Big Faceless:PDF Viewer for JAVA Crack

PDF Viewer是一个可以显示PDF文档的Swing组件。针对不需要完整 API 的客户&#xff0c;Viewer 可以作为 Applet、应用程序或通过 Java Web Start 安装&#xff0c;或嵌入到 Swing 应用程序中。 Big Faceless PDF Library 是一个用于创建、编辑、显示和打印 Acrobat PDF 文档的…

TI Lab_SRR学习_2 天线布局和系统设计

AWR1642具有2个发射天线和4个接收天线。天线布局如下图所示。两根发射天线Tx1和Tx2间距为2lamda,接收天线之间的间距为lamda/2。 下面以TI SRR这个案例为例,讲解根据上述的天线布局如何进行设计。 SRR既要看得远又要分辨率高,设计上采用了多模式雷达的设计思想,具有两种工…

文献阅读(194)Multi-packet Bypassing

文章目录题目&#xff1a;Stay in your Lane: A NoC with Low-overhead Multi-packet Bypassing时间&#xff1a;2022会议&#xff1a;HPCA研究机构&#xff1a;乔治华盛顿大学、GIT 本篇论文的主要贡献&#xff1a; 新的流控制算法FastFlow&#xff0c;用于在非重叠路径上无…

UNIAPP实战项目笔记49 支付成功页面的布局

UNIAPP实战项目笔记49 支付成功页面的布局 实际案例图片 显示确认支付成功页面布局 具体内容图片自己替换哈&#xff0c;随便找了个图片的做示例 具体位置见目录结构 完善布局页面和样式 代码 payment-success.vue部分 <template><view class"payment-success&…

Docker的安装 与 环境配置 及 阿里云镜像仓库配置、常用命令等

目录 一、Docker简介 Docker的应用场景 Docker 的优点 1、简化程序 2、避免选择恐惧症 3、节省开支 Docker的架构 Docker 和虚拟机的区别 下图是虚拟机的体系结构&#xff1a; 下图是Docker的体系结构&#xff1a; 二、Centos7安装Docker 【安装】 安装条件&#x…

实用于单片机的C++字符串切割匹配算法

前几天写GPS模块串口程序的时候遇到了一点小问题&#xff0c;GPS模组上传的数据量大且结构复杂&#xff0c;单片机中又没有上位机中的字符切割函数&#xff0c;琢磨了半天自己写了个切割函数。 本算法中兼具匹配和切割的功能&#xff0c;可以匹配指定的标志并按照指定分隔符将指…

Springboot 使用 Mybatis 启动失败排查定位

收获 当遇到项目启动失败&#xff0c;却没有错误日志打印出来的时候&#xff0c;试试在 run 方法上加个 try-catch&#xff0c;即可捕获到异常 Mybatis 的别名扫描路径不要指定的太宽泛&#xff0c;有可能会出现 Bean 名冲突&#xff0c;导致初始化失败 联想到之前碰到的问题…

无影云电脑——云上安全办公

文章目录无影云桌面介绍安装新手体验特点区别改变无影云桌面 介绍 阿里云无影云桌面&#xff08; Elastic Desktop Service&#xff09;的原产品名为弹性云桌面&#xff0c;融合了无影产品技术后更名升级。它可以为您提供易用、安全、高效的云上桌面服务&#xff0c;帮助您快速…

微信小程序的生命周期概览

IntersectionObserver 用于监听元素是否进入视口&#xff08;与视口是否存在相交&#xff09;&#xff0c;在图片懒加载等场景中被广泛应用&#xff0c;不过除了这个基础的用法&#xff0c;他还有更强大的能力。 使用场景 目前已知的 IntersectionObserver 常用使用场景包括&…

Jenkins-pipeline语法

Pipeline概念 Pipeline是将一个命令/程序/进程的输出发送到另一个命令/程序/进程&#xff0c;进行进一步处理 Pipeline的代码定义了整个构建过程 基本的Pipeline语法格式 声明式的pipeline语法格式 所有的声明都必须包含在pipeline{}中 块只能有节段&#xff0c;指令&#x…

AFT Impulse动态工具,AFT脉冲适用于工作

AFT Impulse动态工具,AFT脉冲适用于工作 AFT脉冲产品是一种强大的动态工具&#xff0c;用于计算低功率管道系统中的压力流量。设计用于液体系统&#xff0c;包括&#xff1a; 水 石油和产品被切割。 化学制品 冷冻剂 科洛尔。。。 AFT脉冲适用于工作&#xff1a; 珊瑚礁的大小和…