zoukankan      html  css  js  c++  java
  • 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函数或者循环,不然只是第一行。

  • 相关阅读:
    二叉树的遍历
    数据结构
    POJ 2054 Color a Tree (贪心)
    $2019$ 暑期刷题记录 $2$(基本算法专题)
    POJ 3889 Fractal Streets(逼近模拟)
    POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)
    CH5E26 扑克牌 (计数类DP)
    BZOJ 1911 特别行动队 (斜率优化)
    BZOJ 1233 干草堆 (单调队列优化DP)
    POJ 1038 Bugs Integrated Inc (复杂的状压DP)
  • 原文地址:https://www.cnblogs.com/jlyg/p/6742100.html
Copyright © 2011-2022 走看看