算法学习
文章平均质量分 59
趣信奥.com
四年信奥教学经历,PTA认证编程老师,信奥官方指导教师,主要分享一些算法知识和信息学竞赛资源。希望了解更多少儿编程信息请看个人主页。
展开
-
时间复杂度是什么,干嘛用?
大家初学编程,做编程练习时,可能会遇到这种情况自己在电脑上运行输入数据,能得到正确的结果,但是网站评测的结果却是0分,或者部分分数。我们思考一下,影响程序解决问题速度的因素有哪些?第一个因素,问题规模。比如同样判断质数,判断100以内的数字和一个数十亿的数字,计算量差别很大。第二个因素,计算机性能。同样的问题,普通电脑和超级计算机的运算时间差距,也是不可想象的。第三,代码本身的效率。对于一个公司来说,提升网站性能的方法主要是后两点,而且提升代码效率的代价远远低于提升服务器。而在编原创 2021-10-29 12:07:42 · 1322 阅读 · 0 评论 -
CSP-J 2021 初赛题详解
2021普及组真题阅读程序部分难度比较高,其他的难度还可以,整体来说必之前难一点。一、单项选择1.D2.B3.A4.C N个数字找最大值,一般做法就是把第一个数字作为最大值直接存下来,然后和后面的每个数字比较,这种方法的比较次数是N-1,同时也是答案中的最小值了,故选 C。5.D模拟入栈出栈操作就可以。6.D 图有m条表,树的边数是n-1,即m - ( ) = n-1. 需要删除 m-n+1条边。7.C8.A 高度为5的完全二叉树最后最后一层的节点数取值范围原创 2021-09-22 16:26:39 · 11073 阅读 · 5 评论 -
unique()用法
unique的作用是“去掉”容器中 相邻元素 的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址,下面举个例子。由于返回的是容器末尾,所以如果想得到去重后的size,需要减去初始地址,lower_bound是得到地址,稍微不同。sz = unique(b + 1,b + n + 1)-(b + 1); //从下标1开始存储sz = unique(a,a + n) - a;sort(a + 1,a + 1 + n); // 排序n原创 2021-06-03 08:44:09 · 3111 阅读 · 0 评论 -
筛法求质数(chasem)
筛法求质数朴素筛法 o( n * log n)#include <iostream>using namespace std;const int N = 1e6+10;int prime[N], cnt;bool st[N];//朴素筛法-O(nlogn)void get_primes(int n) { for(int i = 2; i <= n; i++) { if(!st[i]) prime[cnt++] = i; for(in原创 2021-04-26 09:41:13 · 391 阅读 · 0 评论 -
二分查找 的 各种模板
二分查找 的各种模板算法简介 二分查找是二分法的一种应用,用来解决有序区间的元素查找问题。 每次判断区间中点,根据判断结果可以区间缩小一半,最终锁定答案。 二分法思路简单,但是根据查找需求有不同的模板,里面的细节需要注意。算法模板模板1:要找的数字一定存在时 而且唯一的时候//二分查找 #include <iostream>using namespace std;int binarySearch(int a[],int l,int r,int x)//递原创 2021-04-21 13:41:43 · 580 阅读 · 0 评论 -
sort()用法简介(chasem)
sort()用法简介void sort( RandomIt first, RandomIt last );void sort( RandomIt first, RandomIt last, Compare comp );作用:将从地址first开始 ,到地址last结束的内容进行排序。sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序,它会根据 数据特征 选择最合适的算法。时间复杂度:n*log(n)当我们排序的数据是能直接比较而且是需要从小到大排序原创 2021-04-20 23:43:10 · 340 阅读 · 0 评论 -
memset()用法简介 (chasem)
memset()用法简介memset(void *buffer, int c, int count)作用:将从buffer地址开始 , 连续count个字节的值都设置成 值 c**注意是按字节复制的 **上面的 c 并不是变量的值,变量具体的值还要看变量的类型比如 int 类型 一般占四个字节那么当 c 为 0 变量值就是 补码 00000000 00000000 00000000 合在一起值 0当 c 为 1 变量值就是 补码 00000001 00000001 0000000原创 2021-04-20 23:04:41 · 158 阅读 · 0 评论 -
深入学习高精度运算(chasem)
深入学习高精度运算(chasem)高精度运算是算法学习中一个比较重要的内容实际就是模拟我们平时运算的过程有一定的实用性,虽然python不用模拟直接就能实现下面我们逐个学习高精度的加减乘除1.高精度加法高精度运算,数字可以达到几百位上千位,只能用字符串来接受。接收完数字后,高位在前,低位在后。我们先看下我们平时的加法计算过程需要个位,十位,这样对应位置对齐,而且加完以后数字还可能边长,这样的话最高位在下标0除,没地方进位了。我们不妨把字符串倒过来,这样,既方便进位,又可以让个位十位扥个原创 2021-01-06 16:48:54 · 357 阅读 · 0 评论