CSP-J初赛复习大题整理笔记

本篇全是整理,为比赛准备.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入代码片在这里插入图片描述

#include<cstdio>
using namespace std;
int n, m;
int a[100], b[100];int main() {scanf_s("%d%d", &n, &m);for (int i = 1; i <= n; ++i)a[i] = b[i] = 0;//将两个数组清0,这步基本谁都能看懂for (int i = 1; i <= m; ++i) {int x, y;scanf_s("%d%d", &x, &y);if (a[x] < y && b[y] < x) {//这步就很有迷惑性了,如果一拿到这道题,可能会以为是一个类似取最大//值的题目,但是分析一下总感觉哪里有问题,"a[x]<y&&b[y]<x"这步看不//的话我们具体来分析一下,首先当i=1的时候,a[x]和b[y]都是==0,如果// x和y不等于,肯定能够进来,在到后面的时候,如果我的x和y都不同于前// 面所输入的x和y,那么我的a[x]和a[y]永远都是==0的,都能进来,那如// 果与前面的相同,我则需要比较一下,如果比之前那个大,就能进来,否// 则就进不了这层循环,直接进下一层forif (a[x] > 0)//"a[x]>0和b[y]>0这两种情况就说明了我之前已经输入过一遍甚至多遍这次的x和y,而为什么要清0呢?b[a[x]] = 0;//上面已知我这次的x和y已经进入过这层if,而我这次还能进去说明我满足的那个"[x] < y && b[y] < x"的条件//而我肯定要把这次的x和y值分别赋给a[x]和a[y],但是在赋值之前,我一定要把b[a[x]]和a[b[y]]给清0,理解// 起来就是说先要把之间连的那条给断掉,再连新的嘛//让我们举个栗子就是说:初始x=3,y=2,然后进了if判断,使得a[3]=2.b[2]=3.,然后呢第二次我让x还等于3,y=4,//这时候的a[3]==2,是小于现在的y也就是4的,然后b[4]==0,也小于当前的x也就是3,所以进了if循环。这时候我的// a[x]因为x之前输出过一遍相同的,所以呢a[x]是铁定>0的,进入那个if(a[x]>0)的循环,然后这时候重点来了,他让b[a[x]]=0,//我们看下,现在的a[x]还是上一次的for赋值的a[x]=y也就是a[3]=2,那么b[a[x]]也就是相当于b[3]嘛,注意我这时候因为输了两// 遍3进去,所以说x是等于3的,等于3因为之前有过赋值操作所以a[x]就不会为0,好,我们现在把b[2]=0了,我们回去看一下,b[2]// 是什么?他就是上一次循环与a[3]相连的那个b[2]呀,我上次让a[3]=2,b[2]=3,理解起来就是让这两个点互连,为什么呢?因为我可// 以通过b[2]的值找到与他相连的a数组的那个下标,同样我也可以通过a[3]的值找到与他相连的b点的下标,但是我时候把b[2]清0了,// 为什么?因为我目前录入了一个y值是比之前录入的y值更大,所以我们根据题目条件,要重新将a[3]和b[4]相连,但是一个a[3]只能// 链接一个b[i]呀,所以我们要清除第一个链接的b[2],也就是说要取消a[3]与b[2]的链接,重新将a[3]与b[4]相连。这就是这短短一// 句话的含义,同样下面那个if语句是同理的,就不多于赘述。if (b[y] > 0)a[b[y]] = 0;a[x] = y;//最后这两步在我认为还是有个小坑,就是说为什么不放在if语句的里面而是放在这里?之前讲了这个if进来的条件1.是x与之前的x都不一样,b[y] = x;//2.是我x和y中有一个是与之前一样的,另一个的话是要大于之前那个的,举个例子就是说我第一次x=2,y=3,第二次x=2,y就要>3,或者y=3,//x就要>2,这样才能进入这个if语句里进行模拟。而我这两种情况第一种的话是进不去a[x]>0和b[y]>0这两个if的,直接进行赋值操作,第二种情况// 呢则是需要先把之前那个链接的断掉,这步操作呢在上面两个if中就完成了,剩下的还是要连接新的,也就是赋值操作,所以说两种情况都需要进// 行最后的相互连接,写在这里能减少一丢代码难度。}}int ans = 0;for (int i = 1; i <= n; ++i) {//这个if就很简单,就是看下a和b数组中有多少个没有连接成功的,最后统计ans,输出出来就行if (a[i] == 0)++ans;if (b[i] == 0)++ans;}printf_s("%d", ans);return 0;
}

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL与ES数据同步的四种方案及实践演示

文章目录 一、同步双写优点缺点双写失败风险项目演示 二、异步双写&#xff08;MQ方式&#xff09;优点缺点项目演示 三、基于Datax同步核心组件架构图支持的数据源及操作项目演示 四、基于Binlog实时同步实现原理优点缺点项目演示 一、同步双写 也就是同步调用&#xff0c;这…

切分支解决切不走因为未合并的路径如何解决

改代码的时候改做分支了&#xff0c;本来是在另一个分支上面改代码&#xff0c;结果改到另一个放置上面&#xff0c;然后想着使用git stash进行保存&#xff0c;然后切到另外一个分支再pop&#xff0c;结果不行。 报这个错误&#xff0c;导致切不过去&#xff0c;因为我这边pop…

TCP的滑动窗口与拥塞控制

客户端每发送的一个包&#xff0c;服务器端都应该有个回复&#xff0c;如果服务器端超过一定的时间没有回复&#xff0c;客户端就会重新发送这个包&#xff0c;直到有回复。 为了保证顺序性&#xff0c;每一个包都有一个 ID。在建立连接的时候&#xff0c;会商定起始的 ID 是什…

3D虚拟数字人定制,推动传统文化传播新高度

“数字人”成为“汉语盘点2022”年度十大新词语。伴随着科技发展成长的年轻人逐渐成为消费主力军&#xff0c;如何在虚拟世界与年轻一代用户互动以抓住95后年轻人受众&#xff0c;成为不少传统文化品牌发力的重点。 数字人“天妤”&#xff0c;在3D虚拟数字人定制中&#xff0…

免费的代码审查工具你知道这几个就够了?新手程序员必读

代码质量关系到一个项目的好坏&#xff0c;一直以来都是程序员和项目经理所关心的事情&#xff0c;在之前代码的检查用于人工或者静态页面&#xff0c;再后来就会用的各种工具来做因为不良的代码不仅会影响代码的可维护性&#xff0c;而且还会在某些情况下影响其性能。此外&…

已解决selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain: Cookie ‘

已解决selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain: Cookie ‘domain’ mismatch 文章目录 报错问题报错翻译报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报错 报错问题 粉丝群里面的一个小伙伴遇到问题跑来私信我&#…

从构建者到设计者的低代码之路

低代码开发技术&#xff0c;是指无需编码或通过少量代码就可以快速生成应用程序的工具&#xff0c;一方面可降低企业应用开发人力成本和对专业软件人才的需求&#xff0c;另一方面可将原有数月甚至数年的开发时间成倍缩短&#xff0c;帮助企业实现降本增效、灵活迭代。那么&…

【80天学习完《深入理解计算机系统》】第十五天 4.1 Y86-64指令集与Verilog HDL

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示:思路以及想法★✔   如果大家觉得有帮助的话,感谢大家帮忙 点…

rsync远程同步+inotify监控

目录 一、Rsync 简介 1、rsync是什么 2、备份的方式 3、rsync同步方式 4、常用rsync命令 5、配置源的两种表达方法 二、rsync实验 1、本地复制 ​编辑​编辑 2、异地复制 2.1 rsync服务器配置 2.2 rsync客户端配置 2.2.1 普通同步 2.2.2 免密同步 2.2.3 --delet…

Linux基础命令(示例代码 + 解释)

查看目录下文件 ls [-a -l -h] [路径] -a&#xff08;全部&#xff09; -l&#xff08;细节&#xff09; -h&#xff08;大小&#xff09; ls ls / ls -a ls -l ls -h ls -alh ls -l -h -a ls -lah /切换目录 cd [路径] change di…

使用 System.exit() 来优雅地终止 Spring Boot 项目

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; 使用 System.exit() 来优雅地终止 Spring Boot 项目 ⏱️ 创作时间&am…

IIS解析漏洞复现

文章目录 漏洞复现总结 漏洞复现 打开虚拟机&#xff0c;在C:\inetpub\wwwroot\8000_test目录下放一个phpinfo.php文件&#xff1a; 在服务器管理器中打开IIS管理器&#xff0c;选择处理映射程序&#xff1a; 点击添加模块映射&#xff1a; 配置映射模板&#xff0c;php文件…

【猿灰灰赠书活动 - 06期】- 【计算机考研书单——408专属】

&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;博文为大家争取福利&#xff0c;与机械工业出版社合作进行送书活动 &#x1f468;‍&#x1f…

​消费盲返模式:一种让消费者和商家都受益的新型消费返利模式

您是否想过&#xff0c;如果您的消费能够带来意想不到的回报&#xff0c;您会不会更愿意购买商品或服务呢&#xff1f;您是否想过&#xff0c;如果您的商品或服务能够吸引更多的消费者&#xff0c;并让他们成为您的忠实客户&#xff0c;您会不会更有动力经营您的业务呢&#xf…

一百七十四、Hive——Hive动态分区表加载数据时需不需要指定分区名?

一、目的 在Hive的DWD层和DWS层建立动态分区表后&#xff0c;发现动态插入数据时可以指定分区名&#xff0c;也可以不指定分区名。因此&#xff0c;研究一下它们的区别以及使用场景&#xff0c;从而决定在项目的海豚调度HiveSQL的脚本里需不需要指定动态分区的分区名&#xff…

【数据结构】长篇详解堆,堆的向上/向下调整算法,堆排序及TopK问题

文章目录 堆的概念性质图解 向上调整算法算法分析代码整体实现 向下调整算法算法分析整体代码实现 堆的接口实现初始化堆销毁堆插入元素删除元素打印元素判断是否为空取首元素实现堆 堆排序创建堆调整堆整合步骤 TopK问题 堆的概念 堆就是将一组数据所有元素按完全二叉树的顺序…

记录一次Docker与Redis冲突

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 报错以及Bug ✨特色专栏&#xff1a; …

避坑之路 —— 前后端 json 的注意问题

当我们在进行开发项目的时候&#xff0c;在前后端需要进行数据之间的传输&#xff0c;那么就会需要到json。而json算是字符串中的一种 1.先说一下前端的, 其实这两种都是表示前端希望能收到后端json这样的数据格式&#xff0c;那么我们在后端就需要注意将数据进行转换为json进…

深度学习模型复杂度分析大杂烩

深度学习模型复杂度分析大杂烩 时间复杂度和空间复杂度是衡量一个算法的两个重要指标,用于表示算法的最差状态所需的时间增长量和所需辅助空间. 在深度学习神经网络模型中我们也通过&#xff1a; 计算量/FLOPS&#xff08;时间复杂度&#xff09;即模型的运算次数 访存量/By…

数据结构与算法基础-学习-34-基数排序(桶排序)

目录 一、基本思想 二、算法思路 1、个位排序 &#xff08;1&#xff09;分配 &#xff08;2&#xff09;收集 2、十分位排序 &#xff08;1&#xff09;分配 &#xff08;2&#xff09;收集 三、源码分享 1、InitMyBucket 2、DestroyMyBucket 3、ClearMyBucket 4、…