• A题时遇到的一些技巧


      这篇主要是讲刷题时候遇到的一些技巧,该篇保持持续更新状态。。

      1、求数组的长度:int a[]={,,,};  int n = sizeof(a)/sizeof(a[0])

      2、求想上取整,例如7/3 = 4;  int res = a/b + !!(a%b);

      3、求数组全排序,先对数组进行从小到大排序,然后do{ 对a数组进行操作}while(next_permutation(a,a+n));

      4、背包问题时,求1到V之间的种数,由于用hash法再开一个数组,当数组过大时,内存会挂。因此用如下方法可以节约内存:(相关题目hdu2844)

        (1)方法一:当费用与价值相等的时候。

        int cnt = 0;

        for(int v=1;v<=V;++v)
          if(v==dp[v])
            ++cnt;

        (2)方法二:使用刚好装满的思想去做,最后判断大于0的个数。

      5、字符串初始化最好都为'',这样在使用的时候就不会出现由于末尾没加'',而出现乱码的情况了。

        char str1[50]={''},str2[50]="abcde";

        for(int i=0;i<strlen(str1);++i)

           str2[i] = str1[i];

        //str2[strlen(str1))='';    这句就不用加了。

       6、使用Map<类型,int>时,如果判断是否添加过时有两种方法:

      举例: Map<string,int> msi;

         1、 pair<Map<string,int>:iterator,bool> pmb = msi.insert("张三",100);

           判断pmb.second的值是否为true

        2、直接判断msi[“张三”]的值是否为0(前提是你上一次赋值确保不是0)

       7、在全局类的变量要大写,不然在提交代码后会出现编译不过的现象。例如:next,index这些变量,需要改成Next,Index。

       8、二维数组置零不要int dj[10][10] = {0};没用!需要memset函数或者循环,不然只是第一行。

  • 相关阅读:
    【图像分割】:使用全卷积神经网络FCN,进行图像语义分割详解(附代码实现)
    阿里天池文本分类竞赛task2:初始数据分析
    阿里天池文本分类竞赛task1: 赛题理解
    threejs在建筑学上的应用:《Learning Threejs》
    threejs官网教程geometry有哪些?可以自定义自己的geometry吗?
    cesium如何让模型贴地?
    cesium添加OSM建筑物
    threejs与tubegeometry
    cesium建模&加载3dsmax模型
    cesium与三维管线
  • 原文地址:https://www.cnblogs.com/jlyg/p/6742100.html
Copyright © 2020-2023  润新知