天天看點

做題經驗(個人瞎扯淡)

分類

        一、小資料範圍,需要枚舉,求最大或最小值

           搜尋,for循環枚舉

        二、資料較大,也有枚舉特征,或等差序列

           動态規劃

        三、題目比較長,題中有對流程的描述

         模拟

        四、看起來像數學中的找規律題

           數論,想不出公式就遞推

        五、給了一個圖,找最短路徑

           最短路算法

        六、給了一個圖,判斷圖的連通性并在連通時求最大或最小花費

        生成樹

           七、在一段區間裡修改或求和

        線段樹、樹狀數組、模拟

           八、最大值最小或是最小值最大或判斷一個數成不成立

        二分答案

    九、素數的判斷

   枚舉到根号a。

    十、中位數與最小值

   均分紙牌問題。

   十一、網絡流的限流

   建立一個彙點,連一條流量為限制流量的邊。

   十二、把一個數的每一位拼成一個整數

for(int i=t1;i>=1;i--)
{
    tot=tot*10+ori[i];
}      

    十三、帶權二分圖最大比對

   源點到左邊點流量為1,費用為0;左邊點到能比對的右邊點流量為1,費用為邊權;左邊點到彙點流量為1,費用為0。

   十四、平面圖染色

   顔色=2時,如果n是基數則方案數為0,n是偶數則方案數為2。

   十五、詢問一些序列中最多重複的個數

   做一個統計序列,在序列的左端點+1,右端點-1,然後做這個序列的字首和。

   十六、bitset神器

   這玩意所占空間是相同元素個數的bool數組的1/8,運作時間是1/32(32位系統)或1/64(64位系統)。

    十七、cctype庫函數

    

做題經驗(個人瞎扯淡)

    

做題經驗(個人瞎扯淡)

   十八、堆的複雜度計算

    log(堆的大小),與輸入資料的規模無關。

   十九、nth_element(first,kth,last)函數

    使第k大元素處于第k位置,并且比這個元素小的元素都排在這個元素之前,比這個元素大的元素都排在這個元素之後,但不能保證他們是有序的。

    二十、long double類型函數

   在一般的cmath函數後面加一個l,否則即使傳參是long double,計算的結果也是double。輸入/出long double最靠譜的方式是用double類型輸入/出然後轉成            long double。

   二十一、位運算^

   如果a^b==2,那麼a^2==b。

   二十二、數對個數

     可重:n(n-1)。不可重:n(n-1)/2。

   二十三、優先隊列的comp

     大小于号方向與元素大小相反

   

#include <queue>
#include <iostream>

using namespace std;

struct cmp {
    bool operator()(int i, int j) {return i < j;}
};

int main() {
    priority_queue<int, vector<int>, cmp> q;
    for (int i = 0; i < 5; i++) {q.push(i);}
    for (int i = 0; i < 5; i++) {cout << q.top() << ' '; q.pop();}
    return 0;
}      

暫時這些,想到在更。

轉載于:https://www.cnblogs.com/SpeedZone/p/7223897.html