zoukankan      html  css  js  c++  java
  • C++ 代码模板

    记录一下常用模板。

     

    快速幂运算

    long long fastpow(int a, int b) {
        long long ret = 1;
        long long base = (long long)a;
        while (b != 0) {
            if (b & 1 != 0) {
                ret *= base;
            }
            base *= base;
            b >>= 1;
        }
        return ret;
    }

     

    并查集

    #include <vector>
    #include <iostream>
    #include "unionset.h"
    
    
    #define MAX_N 10000
    int parent[MAX_N];
    int rank[MAX_N];
    
    void uninit(int n) {
        for (int i = 0; i < n; i++) {
            parent[i] = i;
            rank[i] = 0;
        }
    }
    
    int unfind(int x) {
        while (x != parent[x]) x = parent[x];
        return x;
    }
    
    void ununite(int x, int y) {
        x = unfind(x);
        y = unfind(y);
        if (x == y) return;
        if (rank[x] < rank[y]) {
            parent[x] = y;
        }
        else {
            parent[y] = x;
            if (rank[x] == rank[y]) rank[x]++;
        }
    }
    
    bool unissame(int x, int y) {
        return unfind(x) == unfind(y);
    }

     

    Trie结构

    #include "header.h"
    
    class TrieNode {
    public:
        string word;
        TrieNode* child[26];
        TrieNode() {
            word = "";
            for (int i = 0; i < 26; i++) child[i] = nullptr;
        }
    };
    
    class Trie {
    private:
        TrieNode * root;
    public:
        Trie(vector<string> words) {
            root = new TrieNode();
            buildTrie(words);
        }
        void buildTrie(vector<string> words) {
            for (auto s : words) {
                TrieNode* tmpnode = root;
                for (auto c : s) {
                    int idx = c - 'a';
                    if (!tmpnode->child[idx]) tmpnode->child[idx] = new TrieNode();
                    tmpnode = tmpnode->child[idx];
                }
                tmpnode->word = s;
            }
        }
        bool hasprefix(string prefix) {
            TrieNode* tmpnode = root;
            for (auto c : prefix) {
                if (!tmpnode->child[c - 'a']) return false;
                tmpnode = tmpnode->child[c - 'a'];
            }
            return true;
        }
        bool hasword(string word) {
            TrieNode* tmpnode = root;
            for (auto c : word) {
                if (!tmpnode->child[c - 'a']) return false;
                tmpnode = tmpnode->child[c - 'a'];
            }
            return tmpnode->word != "";
        }
    };
    
    
  • 相关阅读:
    黄金连分数
    第39级台阶
    四、绘图可视化之Seaborn
    三、绘图和可视化之matplotlib
    二、pandas入门
    python_111_动态导入模块
    爬虫_python3_抓取猫眼电影top100
    爬虫_python3_urllib
    python_112_网络编程 Socket编程
    python_111_异常处理
  • 原文地址:https://www.cnblogs.com/ethanhong/p/10147270.html
Copyright © 2011-2022 走看看