1

5 条评论

  • @ 2024-1-27 16:44:10

    高精度减法

    模板例题传送门:高精度减法

    代码模板:

    vector<int> sub(vector<int> &A, vector<int> &B)
    {
        vector<int> C;
        for (int i = 0, t = 0; i < A.size(); i ++ )
        {
            t = A[i] - t;
            if (i < B.size()) t -= B[i];
            C.push_back((t + 10) % 10);
            if (t < 0) t = 1;
            else t = 0;
        }
    
        while (C.size() > 1 && C.back() == 0) C.pop_back();
        return C;
    }
    
    • @ 2024-1-24 16:08:52

      高精度加法

      模板例题传送门:高精度加法

      代码模板:

      vector<int> add(vector<int> &A, vector<int> &B)
      {
          if (A.size() < B.size()) return add(B, A);
      
          vector<int> C;
          int t = 0;
          for (int i = 0; i < A.size(); i ++ )
          {
              t += A[i];
              if (i < B.size()) t += B[i];
              C.push_back(t % 10);
              t /= 10;
          }
      
          if (t) C.push_back(t);
          return C;
      }
      
      • @ 2024-1-24 9:38:33

        整数二分

        模板例题传送门:数的范围

        代码模板:

        bool check(){}
        
        int bsearch_1(int l, int r)
        {
            while (l < r)
            {
                int mid = (l + r) / 2;
                if (check(mid))
                    r = mid;
                else
                    l = mid + 1;
            }
            return l;
        }
        
        
        int bsearch_2(int l, int r)
        {
            while (l < r)
            {
                int mid = (l + r + 1) / 2;
                if (check(mid))
                    l = mid;
                else
                    r = mid - 1;
            }
            return l;
        }
        
        • @ 2024-1-20 21:28:48

          归并排序

          模板例题传送门:归并排序

          代码模板:

          void merge_sort(int q[], int l, int r)
          {
              if (l >= r) return;
          
              int mid = (l + r) / 2;
          
              merge_sort(q, l, mid);
              merge_sort(q, mid + 1, r);
          
              int k = 0, i = l, j = mid + 1;
              while (i <= mid && j <= r)
              {
                  if (q[i] <= q[j]) tmp[k++] = q[i++];
                  else tmp[k++] = q[j++];
              }
              while (i <= mid)  tmp[k++] = q[i++];
              while (j <= r)  tmp[k++] = q[j++]; 
          
              for (i = l, j = 0; i <= r; i++, j++)
                  q[i] = tmp[j];
          }
          
          • @ 2024-1-20 21:27:51

            快速排序

            模板例题传送门:快速排序

            代码模板:

            void quick_sort(int q[], int l, int r)
            {
                if (l >= r) return;
                
                int x = q[l], i = l - 1, j = r + 1;
                while (i < j)
                {
                    do i++; while (q[i] < x);
                    do j--; while (q[j] > x);
                    if (i < j) swap(q[i], q[j]);
                }
                quick_sort(q, l, j);
                quick_sort(q, j + 1, r);
            }
            
            • 1