- 博客(19)
- 收藏
- 关注
原创 大鱼吃小鱼
有 N 条鱼每条鱼的位置及大小均不同,他们沿着 X 轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向( 0 表示向左, 1 表示向右)。问足够长的时间之后,能剩下多少条鱼?
2024-03-16 10:58:22 539 1
原创 什么是onehot 编码
我们使用one hot编码器对类别进行“二进制化”操作,然后将其作为模型训练的特征,原因正在于此。sklear的LabelEncoder可以帮我们完成这一类别值分配工作。将以上数据集one hot编码后,我们得到的表示如下。标签编码的问题是它假定类别值越高,该类别更好。假设“花”的特征可能的取值为。,这些特征都是二进制的。
2024-03-09 11:25:15 487
原创 大数的阶乘
看起来比大数加法还要简洁,但是输出的过程其实不太清楚,记住吧。尤其是我不太明白为什么最后输出用cout就错误了。输入可能包括多组数据,对于每一组输入数据,输出N的阶乘。输入一个正整数N,输出N的阶乘。正整数N(0<=N<=1000)
2024-03-07 11:32:02 496
原创 KY85 二叉树
如上所示,由正整数1,2,3……我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。输入数据包括多行,每行给出一组测试数据,包括两个整数m,n (1 <= m <= n <= 1000000000)。对于每一组测试数据,输出一行,该行包含一个整数,给出结点m所在子树中包括的结点的数目。
2024-03-03 10:30:21 314
原创 KY111 日期差值
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。我一开始做的时候想的就是做差值,后来发现考虑的情况太多了,后来看了题解。有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD。原来可以通过每次加一天的方式,让两个日期相等,从而算出差值,秒!也学习到了一种 建立二维数组的方式,从而得出平年闰年的每月的天数。每组数据输出一行,即日期差值。
2024-03-03 10:26:53 541
原创 大数的加法
第一步:以字符串的形式将数字接收,随后将其用int数组按位存储下来,注意是逆序存储,方便后面加法的时候对齐。第二步:两个数字按位相加,up存储进位。
2024-02-29 10:59:13 379
原创 KY262 Problem A
请写一个程序,给出指定整数范围【a ,b】内所有的完数,一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数,例如6是完数,因为6=1+2+3。每一组数据为两个正整数,分别表示a和b(1<a<b<10^5)。遍历肯定超时间了,居然在题解中看到打表的方法,不失为一种新思路。指定范围内的所有完数,每个数占一行。
2024-02-27 09:51:36 449
原创 最大公约数
2、欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。例如:a和b(a>b)的最大公约数是a%b和b的最大公约数。
2024-02-19 22:18:33 331 1
原创 KY160 众数
输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。测试数据有多组,每组输入20个1-10之间的数。这不就是408数据结构的经典代码嘛,鄙视我自己了。对于每组输入,请输出1-10中的众数。
2024-02-05 01:39:54 325 1
原创 求最大素因数
最直接的方法是对所有小于该数的整数,判断是否为给出数的因数且为质数(最蠢的方法判断),然后输出最大的。这种方法的复杂度很高,应该会时间超时。可以使用该数的因数对该数进行分解,再继续对分解后的数求最大质因数,这样我们的计算量将极大缩小。主要是我在解题过程中,使用方法二还是超时,借鉴了题解中的递归做法。
2024-02-03 23:26:03 532 1
原创 KY3 约数的个数
输入的第一行为N,即数组的个数(N<=1000) 接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)可能有多组输入数据,对于每组输入数据, 输出N行,其中每一行对应上面的一个数的约数的个数。本题我一开始是最简单的穷举,时间复杂度是O(输入n个整数,依次输出每个数的约数的个数。搜到了另一个复杂度更低的求因数的做法。其次,注意设置的数字类型。
2024-02-01 19:40:47 400 1
原创 KY2 成绩排序
注意一个case里面有多组样例,请用循环处理输入 输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开。其实这道题不难,不能ac是因为我忽略了sort是不稳定的,而题设要求是稳定排序,所以使用的是stable_sort。题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩。按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开。都按先录入排列在前的规则处理。
2024-02-01 19:09:12 450 1
原创 KY90 简单密码
对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。如下是密文和明文中字符的对应关系。一组测试数据包括三部分: 1. 起始行 - 一行,包括字符串 "START" 2. 密文 - 一行,给出密文,密文不为空,而且其中的字符数不超过200 3. 结束行 - 一行,包括字符串 "END" 在最后一组测试数据之后有一行,包括字符串 "ENDOFINPUT"。看见题解才明白,直接用getline(str,cin)输入一行,只将字母进行修改,而非字母的直接落下来就好。
2024-01-28 19:55:21 360 1
原创 KY18 特殊乘法
写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5。输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。这道题应该不难,应该数组或者字符串都能解决,只是一开始没读懂,还是记录一下。两个小于1000000000的数。
2024-01-27 22:02:20 386 1
原创 KY115 后缀子串排序
用str.substr(pos,len)来分割子串,分割下来的字串用vector动态数组存放,再用sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(选填))进行排序。对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain。substr(pos,len)返回从pos位开始,长度为len的字串。本题的关键其实在于熟练掌握STL库。每个案例为一行字符串。
2024-01-26 00:07:37 487 1
原创 算法笔记——第6章(STL介绍)
1、vector可以理解为“2、定义3、访问方法:vi[i]等价于vi.begin()+ivi.end()4、含用函数push_back(x)就是在vector后面添加一个元素xvi.size()得到容器的大小//删除vector的尾元素//insert(it,x)是在这个位置插入元素x//erase()删除这个位置的单个元素//erase()删除这个区间的所有元素,这个区间是左闭右开vi.clear();//clear()清空容器。
2024-01-21 23:07:17 676
原创 算法笔记——第二章
注意:需要加上头文件,建议初学者只赋0或-1;如果要对数组赋予其他数字,请使用fill函数(但是memset执行速度更快)6、strlen()可以得到字符数组第一个\0前的字符的个数。9、getline 用于读入一行数据(包括空格)4、memset——对每个元素赋予相同的值。注意:gets识别换行符作为输入结束。5、gets输入,puts输出。2、单个字符的输入输出。如果是string容器。3、常用math函数。
2024-01-09 19:05:09 351
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人