栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

ACM经验大杂烩

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ACM经验大杂烩

目录

一,题目类型

二,时间复杂度

三,模板积累

四,STL

五,压行坑之类型坑


一,题目类型

常见的题目分为几大类:

1,算法

分治、搜索、贪心、DP

2,数据结构

链表、二叉树、并查集、树状数组、线段树

3,数学

数论、几何、图论

4,模拟

二,时间复杂度

时间复杂度_csuzhucong的博客-CSDN博客_时间复杂度

第四章

三,模板积累

ACM模板_csuzhucong的博客-CSDN博客_acm模板整理和使用方法

四,STL

ACM总结——STL标准模板库   ACM总结——STL标准模板库_nameofcsdn的博客-CSDN博客

1,全排列

next_permutation 下一个全排列

prev_permutation 上一个全排列

返回值是bool类型,表示操作成功或者操作失败(没有上一个或下一个全排列)

char sn[40];
next_permutation(sn,sn+32); 
prev_permutation(sn,sn+32);    

2,sort 、copy

ACM总结——STL标准模板库_nameofcsdn的博客-CSDN博客

3,find 、lower_bound、upper_bound、equal_range

ACM总结——STL标准模板库_nameofcsdn的博客-CSDN博客

五,压行坑之类型坑

我在力扣OJ 1314. 矩阵区域和 里面,我写了一个小函数:

int f(vector> &mat, int i, int j)
    {
        if (i < 0 || j < 0) return 0;
        if (i >= mat.size()) i = mat.size() - 1;
        if (j >= mat[0].size()) j = mat[0].size() - 1;
        return mat[i][j];
    }

这是一个已经AC的代码里面的一个函数,然而,故事并没有结束。

为了压缩行,我改成了:

    int f(vector> &mat, int i, int j)
    {
        return (i < 0 || j < 0) ? 0 : mat[min(i,mat.size() - 1)][min(j,mat[0].size() - 1)];
    }

结果编译错误,为什么呢?

因为size函数返回的是unsigned long

我改成:

    int f(vector> &mat, unsigned int i,unsigned int j)
    {
        return (i < 0 || j < 0) ? 0 : mat[min(i,mat.size() - 1)][min(j,mat[0].size() - 1)];
    }

还是编译错误,再改成

    int f(vector> &mat, unsigned long i,unsigned long j)
    {
        return (i < 0 || j < 0) ? 0 : mat[min(i,mat.size() - 1)][min(j,mat[0].size() - 1)];
    }

结果编译成功但是居然解答错误。

仔细一看,这个代码就是一坨垃圾,i<0根本就是不可能的。

如果非要压缩行的话,只能做类型转换。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/957669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号