- 博客(45)
- 收藏
- 关注
原创 P1873 [COCI 2011/2012 #5] EKO / 砍树
【代码】P1873 [COCI 2011/2012 #5] EKO / 砍树。
2024-08-01 20:40:59 327
原创 B4005 [GESP202406 四级] 黑白方块 【暴力枚举】【前缀和】
#include<bits/stdc++.h>using namespace std;int n,m,ans,tmp;char mp[20][20];int cheak(int a,int b,int c,int d){ //a<=c b<=d int cnt=0; //枚举矩阵中的每个点 for(int i=a;i<=c;i++) for(int j=b;j<=d;j++) if(mp[i][j]=='1') cnt++;//统计黑格的个
2024-07-25 19:44:22 549 1
原创 1329:【例8.2】细胞 【广度优先搜索】
由于手搓数组队列比较浪费初学者的时间,建议优先掌握STL大法中的queue队列模板。例题:1329:【例8.2】细胞。
2024-07-20 19:46:38 704
原创 c++编程中的左移和右移操作
在C++编程中,左移(left shift)和右移(right shift)操作是对二进制数进行位移操作的基本方法。它们通过移动二进制位的位置来实现不同的功能,通常用于位运算和优化计算。
2024-05-20 18:00:00 1233 1
原创 原码、补码和反码
原码、反码和补码是计算机处理中表示有符号整数的三种方法。补码因其在加减运算中的简化性和统一性被广泛采用,是目前主流的表示方法。理解这些概念对于深入了解计算机底层运算和数据表示方式非常重要。
2024-05-18 17:29:40 346 1
原创 B3870 [GESP202309 四级] 变长编码【位操作的基本应用】
本题可以说是位操作的基本应用(不会也没事,用%和/照样可以过,但位操作的运行速度会更快):顺带科普一下位操作的基本应用,掌握的同学可以直接跳过。6、右移(>>):将一个数的所有位向右移动指定的位数,左侧空出的位用用0填充(符号位保存不变)。2、位或(|):将两个数的对应位进行或操作,只要两个数的对应位中有一个为1,结果位就为1。1、位与(&):将两个数的对应位进行与操作,只有当两个数的对应位都为1时,结果位才为1。3、位异或(^):将两个数的对应位进行异或操作,当两个数的对应位不相同时,结果位为1。
2024-05-11 10:11:44 311 1
原创 c++四舍五入精讲
2、向下取整floor():向下取整是指将一个数向负无穷方向取最接近的整数。例如,在-3~-4之间的绿点都将向数轴左边取整为-4,任何在3~4之间的红点都将向左边取整为3。看红点离两端a和b的距离,向距离更短的方向取整,例如,这里红色线段
2024-05-11 09:26:01 1947 1
原创 递推之平面分割问题【图文超详细】
递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法。这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。无论顺推还是逆推,其关键是要找到递推式。这种处理问题的方法能使复杂运算化为若干步重复的简单运算,充分发挥出计算机擅长于重复处理的特点。递推算法的首要问题是得到相邻的数据项间的关系(即递推关系)。
2024-04-26 14:58:37 1296 1
原创 C++文件重定向与文件读写操作
默认输人输出方式都是标准输入输出(stdin,stdout):弹出一个窗口,手动输人内容然后程序运行后,会在同一个窗口输出运行结果。大多数 Online Judge 都是使用这种方式对程序进行评判的。但是许多程序设计竞赛(比如 NOI 系列比赛)要求使用文件输入和输出。这种输出方式可以将硬盘上的文件调入程序,程序运算后生成另外一个文件。
2024-04-20 15:32:44 269
原创 C++地址(学指针前必须掌握)
地址的大小取决于操作系统的位数,例如32位操作系统中的地址通常是32位(即4个字节,8位十六进制数),64位操作系统中的地址通常是64位。栈中的内存空间是按照先进后出的原则进行分配和释放的,每当一个函数被调用时,栈会将函数的局部变量和函数调用的上下文信息入栈(分配内存),当函数调用结束时,栈会将这些信息出栈(释放内存)。然而,需要注意的是,栈的大小是有限的,过多的局部变量或过深的函数调用可能导致栈溢出的错误。栈的大小是由操作系统或编译器预先分配的,而堆的大小可以根据程序的需要进行动态调整。
2024-04-19 20:38:20 1482 1
原创 C++空间复杂度分析
为了讲课哈,一般人不这样写代码。第一行中声明了一个空间来存储变量n,这是常数级的(不会随着数据规模n的变化而变化),第三行声明了n个空间来储存数组,所以这段代码的空间复杂度为。这样的对数阶复杂度平时都用不到。而且,空间复杂度分析比时间复杂度分析要简单很多。理解了前面讲的内容,空间复杂度分析方法学起来就非常简单了。类比一下,空间复杂度全称就是渐进空间复杂度,表示算法的存储空间与数据规模之间的增长关系。时间复杂度的全称是渐进时间复杂度,表示。算法的执行时间与数据规模之间的增长关系。常见的空间复杂度就是。
2024-04-19 18:24:13 322
原创 C++时间复杂度分析
如果想要知道一个程序运行需要花费多少时间,直接运行测试不是更简单更准确吗?何必去花精力推算复杂度!首先,这个想法没问题,确实可以直接跑出来,但这属于马后炮,无法提前预估算法的时间复杂度,而且也非常受限:1、测试结果在不同处理器上运行的结果会有很大波动2、即使在同一环境下运行,不同数据也会导致结果有很大波动所以需要一个不用具体测试就能评估程序执行效率的方法,也就是时间、空间复杂度分析方法。
2024-04-19 14:16:00 2154 1
原创 C++二维数组与多维数组基本应用
先从熟悉的一维数组讲起,比如定义一个int a[4],其在内存中的模型如下:该一维数组由四个相同且紧挨着的元素组成,每个元素的大小正好是一个int的大小,即4个字节。二维数组的本质就是由多个一维数组构成的数组,每个元素就是一个一维数组。比如定义一个int a[3][4],其在内存中的模型如下:但是我们一般认为将其想象成如下的表格:这里二维数组是由3个一维数组构成的,而每个一维数组又由4个整型元素构成。第一个下标访问一维数组的位置,第二个下标访问当前一维数组中i整型元素的位置。
2024-04-17 13:20:37 201 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人