原创 【模版】輸入\輸出優化

輸入\輸出優化 對數字的讀入,編程中有常用的 cincincin 和 scanfscanfscanf 。 但讀入的數據較大的時候,cincincin 讀入的速度 遠低於 scanfscanfscanf (差距不小) 一個優美的

原创 【模版】樹(重)鏈剖分

樹(重)鏈剖分 已知一棵包含 NNN 個結點的樹,每個節點上包含一個數值,需要支持以下操作: 操作111: 格式: 111 xxx yyy zzz 表示將樹從 xxx 到 yyy 結點最短路徑上所有節點的值都加上 zzz 操作

原创 【模版】線段樹

線段樹 線段樹是一種普通的高等樹狀數據結構。 基礎的線段樹可以解決區間加減修改區間加減修改區間加減修改,查詢區間和區間和區間和和極值極值極值。 線段樹是一棵二叉樹,每個節點一定有兩個或無孩子。 線段樹傳遞參數太多,導致耗時加大

原创 【模版】最小生成樹Kruskal

最小生成樹 nnn 個點,mmm 條邊的無向圖。 求最小生成樹的邊權值和。 貪心思想:將每一條邊的u,v,wu,v,wu,v,w信息保存下來,然後按照權值從小到大的順序依次加邊。每次加邊的時候,判斷 u,vu,vu,v 是否屬

原创 【模版】線性基 + 變形

線性基(極值、區間極值、第k大小) 線性基的性質: 1.1.1.線性基能相互異或得到原集合的所有相互異或得到的值。 2.2.2.線性基是滿足性質 111 的最小的集合 3.3.3.線性基沒有異或和爲 000 的子集。 先引入

原创 【模版】ST表

ST表 給定一個長度爲 nnn 的序列,查詢 qqq 次 [al...ar][a_l...a_r][al​...ar​]的極值。(RMQ問題) (比線段樹的常數小,代碼簡短。但是不支持修改且只能用於查詢極值) 1.f[i][j

原创 【模版】最近公共祖先LCA(鏈剖)

最近公共祖先LCA(鏈剖) 給定一棵 以 sss 爲根節點,共有 nnn 個點的樹。 有 mmm 次查詢 每次查詢 u,vu ,vu,v 的最近公共祖先。 算法流程 111.根據連邊的信息建圖(鄰接表)。代碼就不貼了,注意建

原创 【浙江省學軍中學-比賽試題】題解(補題中,未完)

A. 核酸檢測 時間限制:100ms100ms100ms 空間限制:128MB128MB128MB 題目描述 新型冠狀病毒疫情爆發!某城市內大量疑似患者被集中到各個隔離點,初期確診非常困難,專家團隊需要依次到這些隔離點去現場指導

原创 【模版】線性基的一些變形

線性基變形 在洛谷提供的模版上,我們只寫了 nnn 個數裏 任意挑選數,使得其中異或值最大。 若規定好區間,詢問區間內的最大值或者最小值,或者能否通過異或得到數字 KKK ,我們就需要對原來的線性基模版進行變形推廣。 有 N

原创 【模版】並查集

並查集 並查集是經典的圖論算法,用來維護點與集合的關係,代碼也簡潔明瞭。 給定 NNN 個點,有 MMM 次操作,每次操作輸入 ppp aaa bbb 。 若 p=1p = 1p=1 ,則 合併 aaa bbb; 若 p=2p

原创 【模版】最短路Dijkstra + Floyed

最短路Dijkstra(堆優化) 一、前置知識點: 1.pairpairpair的使用 2.優先隊列的使用 3.原 dijkstradijkstradijkstra的 n2n^2n2 寫法 二、其他 優化所在:當原來需要 O(

原创 【模版】字符串匹配 KMP 算法

字符串匹配KMP算法 給出兩個字符串 S1S_1S1​ 和 S2S_2S2​ ,其中 S2S_2S2​ 爲 S1S_1S1​ 的子串. 1.1.1. 求出 S2S_2S2​ 在 S1S_1S1​中所有出現的位置. 2.2.2

原创 【模版】最近公共祖先LCA(倍增)

最近公共祖先LCA(倍增) 給定一棵 以 sss 爲根節點,共有 nnn 個點的樹。 有 mmm 次查詢 任意兩點 u,vu ,vu,v 的最近公共祖先 一、前置知識點 1.鄰接鏈表 存圖 2.倍增原理 ( 2n2^n2n

原创 【模版】乘法逆元

乘法逆元 當求解答案過程中對p取餘同時又涉及除法運算時,需要把除法轉成乘法才能保證經過模法運算後答案是正確的。 一、線性遞推求逆元 輸入 nnn , ppp 。 求 1,2,3,...,n1,2,3,...,n1,2,3,..

原创 【模版】快速冪

快速冪 原理: xyx^yxy中的 yyy 轉化成二進制數,然後每一個 111 對應 xxx 的 iii 次方 這樣把xyx^yxy轉化成了xyx^yxy = xax^axa * xbx^bxb * xcx^cxc… 通過對