原创 計算中綴表達式模板(支持變量)

#include<bits/stdc++.h> using namespace std; const double eps=1e-8; int priv[130]; double val[130]; string a; void ini

原创 計算幾何模板綜合第二彈 圓

#include <bits/stdc++.h> using namespace std; const double eps=-1e8; const double pi=acos(-1); const int maxn=1005; in

原创 計算幾何模板綜合第三彈 經典問題

#include <bits/stdc++.h> using namespace std; const double eps=-1e8; const double pi=acos(-1); const int maxn=1005; in

原创 計算幾何模板綜合第一彈 點,線,多邊形,凸包,半平面

#include<bits/stdc++.h> using namespace std; const double eps=-1e8; const double pi=acos(-1); const int maxn=1005; int

原创 第十七屆上海大學程序設計春季聯賽 CSL的魔法

此題很容易想到一個序列遞增,另一個序列遞減即可滿足,然而這樣寫會一wa到底。 考慮這樣一個例子: 3 1 3 2 3 1 2 答案是:0 發現這樣一組例子後考慮用pair數組,先讓一個序列升序,求最少交換幾次能讓另一個序列降序即爲答案

原创 HDU2121&&BZOJ4349 最小樹形圖(無根&&有根)

  HDU2121   題意:給你一張n個節點m條邊的有向圖,求此圖的最小樹形圖,輸出最小樹形圖的權值和根節點編號。   思路:最小樹形圖模板題,特殊點在於未指定根,需要自己定義一個虛擬根,把這個根連向其餘的每一個點,邊權爲其餘所有邊權值

原创 codeforces 125E 單度限制最小生成樹

題意:滿足1號節點度爲k的前提下,求最小生成樹,輸出此最小生成樹的邊數和所有邊的編號。數據保證無自環無重邊。   思路:對除1號節點以外的點集,求一次最小生成森林,對於每一個最小生成森林的聯通分量,選擇一條最短的邊與1號節點相連,設有x個

原创 POJ3041 二分圖 最小點覆蓋=最大匹配數

題意:有一個N*N的網格,該網格有K個障礙物.你有一把武器,每次你使用武器可以清楚該網格特定行或列的所有障礙.問你最少需要使用多少次武器能清除網格的所有障礙物? 分析:把網格的行看作左邊點集的點,網格的列看成右邊點集的點. 如果(i,j)

原创 POJ2337 歐拉回路

題意:給你n個由小寫字母組成的單詞,要求將這n個單詞連接起來,使得前一個單詞的最後一個字母和後一個單詞的第一個字母相容,輸出字典序最小的解 思路:不難發現此題可以轉化爲歐拉路徑問題,把每個字符串的第一個字母當作起點,最後一個字母當作終點

原创 歐拉篩擴展

歐拉篩可以認爲是埃篩的升級版。 埃篩的缺陷在於對於一個合數,有可能被篩多次,例如30=2*15=3*10=5*6。不難發現,如果我們用它的最小質因子來篩選,就可以保證每個合數只被篩選一次,這便是歐拉篩法。 而歐拉篩的擴展就在於它可以在篩素

原创 牛客寒假算法基礎集訓營4 Applese的毒氣炸彈(最小生成樹)

這道題的解法居然是最小生成樹,根本看不出來啊,果然圖論難就難在你根本看不出來它是圖論。 把同類元素的試劑當作一個點之後,把花費的腦力作爲邊權,求這個圖的最小生成樹即可。 人盡皆知求MST通常選用克魯斯卡爾,然而筆者的克魯斯卡爾是沒有

原创 牛客寒假算法集訓營4 Applese走迷宮(經典bfs)

這題非常經典,但經典不是我記錄它的理由。這道題值得記錄的地方在於花費一個單位時間進行屬性轉換這個操作。這一點實現方法很多,但要麼寫起來有些麻煩,要麼寫出來不那麼明瞭,看過標程以後才恍然大悟,原來可以很簡單的處理它:只需要在搜到它的時

原创 牛客寒假算法集訓營5 炫酷路途(建圖 最短路)

可以將所有額外連邊的點再加上起點終點構成一張單獨的圖。 根據題目數據範圍,上述最多一共只有32個點。 隨後計算這些點兩兩間的距離並求起點到終點最短路即可。 這裏用到了__builtin_popcount(),它可以O(1)計算二進制

原创 牛客寒假算法集訓營1 小a與軍團模擬器(啓發式合併)

這道題通過dfs暴力統計初始軍團數是常規操作,此題難點在於之後的修改操作,我們可以用vector記錄下每種顏色存在的位置,然後枚舉要更改的顏色位置,每個位置原來對於答案的貢獻是和他相鄰不同色的節點個數,我們減去原來的答案加上更改後的答

原创 牛客寒假算法集訓營1 小a的學期(歐拉篩 組合數)

容易推得答案就是C(2n,n)-C(2n,n+k),然而數據不保證p爲質數,這樣一來就不能直接逆元求組合數了。 我們可以用線性篩預處理出每個數的最小質因子,對於每個數將其分解成質數乘積的形式,最後統計每個質數的貢獻。 此題並不難,值