OJ 训练之路

发布时间 2023-12-19 18:56:25作者: cagindex

这里主要记录dz学习计概A以来收获到的好题,用来考前回顾或者之后回顾。

Section 0:小细节

这里因为dz作为初学者,难免有一些细节性的东西掌握不牢固,用来考前回顾,以免因为这个时间复杂度没达标而吃大亏。

注:虽然里面有很多库运用的推荐,但是依旧建议自己能够具体实现。

0.1 求素数

这里直接调用 <math.h> 库的 sqrt。dz之前因为这个被卡过时间,无语。。。

int isPrime(int n) {
    if (n < 2) {
        return 0;
    }
    for (int i = 2; i <= sqrt(n); i++) {
        if(n % i == 0) {
            return 0;
	    }
    }
    return 1;
}

0.2 排序

这里直接建议用 库中的 sort。主要是学会自定义比较函数。

0.3 二分查找

二分查找分为三种,1. 找是否有这个值,2. 找下界,3.找上界。这里推荐用 库中的 binary_search, lower_bound, upper_bound.

更多细节可以看这个博客,很有参考意义。

Section 1: 递归

感觉做了作业题,递归的样式归来归去也就那个样子,重要的是每个状态如何表示。

1.1 正整数任意进制转换

这个不是典型的递归,但是加深了我对任意进制如何转换的理解。复习的时候重点理解如何在 O(n) 内做到任意进制转换。

1.2 计算字符串的相似度

注意到每步的操作,这里主要是要能想到用BFS来做搜索。

Section 2:动态规划

2.1 房屋租界(有代价的有起点有终点的区间调度问题)

参考