原创 SPOJ COT(樹上k大,主席樹+LCA)

題目鏈接 給出一顆含有n個節點的樹,每個節點有個權值。問u到v的路徑上第k小的權值是多大。 做法就是主席樹+LCA,每個節點建立一顆從根(默認爲1)到它的線斷樹,那麼u->v路徑的線斷樹就等於T[u] + T[v] - 2

原创 Lightoj1188 Fast Queries(樹狀數組離線)

題意 給出n個數,Q次詢問l,r表示數組l到r區間內有多少種數字。 思路 離線處理每個區間,把區間按照r的值從小到大排序。用vis[...]數組記錄每個數前面出現的最近的位置。處理到位置i時,如果前面出現過a[i], 那麼把前面

原创 VScode中launch和task參數解釋

一、launch.json { // 使用 IntelliSense 瞭解相關屬性。 // 懸停以查看現有屬性的描述。 // 欲瞭解更多信息,請訪問: https://go.microsoft.com/f

原创 win10安裝anaconda+pytorch-cpuOnly

一、下載anaconda並安裝 1.從anaconda的官網下載安裝包 準備不小於5GB的空間,最好不小於20GB最好不小於20GB最好不小於20GB,因爲後期還需要安裝其他包。安裝過程中可以選擇自動添加到系統環境路徑。 二

原创 win10上sublime3運行C++不彈出終端問題解決

參考博客 { "cmd": ["g++","-Wall", "${file}", "-o", "${file_path}/${file_base_name}"], "file_regex": "^(..[^:]*):([0-9

原创 HDU 4729 An Easy Problem for Elfness(樹上主席樹+LCA+二分)

題目大意:給你一棵樹,每條邊有一個容量。然後m個詢問,每個詢問是互相獨立的,給你兩個點S, T,一個預算K, 建一條容量爲1的新邊的費用A(可以建在任一兩個節點之間,包括S,T),將某一條現有的邊容量擴大1的費用B。

原创 Lightoj1083 Histogram(線斷樹+二分)

選定a[i]是,以它的高爲準,往左找第一個小於它的後一個位置,往右找第一個小於它的前一個位置。 const int maxn = 3e4 + 123; int a[maxn]; int n; struct SegmentTree

原创 hdu5410 CRB and Birthday(揹包)

這題就是揹包,二進制優化下就好了。 不懂二進制優化的就看看揹包九講 /***************************************** Author :Crazy_AC(JamesQi) Time

原创 Acdream1103 瑤瑤正式成爲CEO(費用流+樹剖)

題目鏈接 中文題意就略去。求1到u的最小費用可以用費用流來做,其他的就直接遍歷一遍。那麼鐵路的a值的更改需要用樹剖來維護, 並且每次查詢前需要把線斷樹中的a值更新到tree,再重新構網絡流的圖跑費用流。先算出流量爲0時的費

原创 lightoj1101 ASecret Mission

題意 給你張圖,n個點m條雙向邊,有正邊權。然後是Q個詢問<u,v>,表示u到v的路徑上的最大值的最小。 分析 求一個MST是顯然的,按照最小邊權的貪心把圖連通。然後就是普通的樹鏈剖分。 /******************

原创 Lightoj 1411 - Rip Van Winkle`s Code(線斷樹)

題意 就是用快速的方式實現在面的四種操作。 long long data[250001]; void A( int st, int nd ) { for( int i = st; i <= nd; i++ ) data[

原创 Gym 100851F Froggy Ford(dijkstra)

題意 有條寬爲w的河流,兩岸分別在x = 0, x = w處,河中間有n個石板。在河的一岸有一隻青蛙想通過石板跳到對岸去。現在可以在河 中間某個位置多加一塊石板,使得在單步跳躍中的最大值最小。 思路 Dijkstra變形,用兩維

原创 Gym 100646H You’ll be Working on the Railroad(搜索)

題意就是找一條從0到1的簡單路徑,費用最小。這裏的費用定義如下: 1.路徑條數=1,費用就爲這條邊的費用。 2.路徑條數=2,費用就爲兩條中最小的。 3.路徑條數>2,費用等於所有邊的費用減去路徑中最大和次大的

原创 CodeForces 547B (單調棧)

題意 一個有n個元素的序列,沒連續l個元素的最小值爲這個串的strength值,求所有連續l個元素的strength是的最大值。 分析 a[i]如果是其所在串的strength值,那麼必然它是最小值,往前和往後找小於它的第一

原创 hdu5413 CRB and Roads(topo + bitset)

給定一張有向圖,對於邊e<u,v> ,如果去掉它的話,u仍然可以到達v的話,那麼這條邊就是多餘邊。 顯然的一個思路是倒着做。先topo一遍,然後倒着來,這裏需要用到bitset(也是賽後才知道有這種東西) const int m