原创 CodeForces 1009F Dominant Indices 樹上dsu

老厲害了,借這道題學習一下樹上啓發式合併。 #include<iostream> #include<cstdio> #include<string.h> #include<algorithm> #include<vector> #inc

原创 HDU 1811 Rank of Tetris 並查集+拓撲排序

我這號菜雞,上來又用一個蠢萌的算法WA掉了這道題,就是把相同級別的點,也按照編號的大小做一個拓撲排序。其實這用手指頭肚想想都不可能對,一定會把原本conflict的情況算成ok的。所以轉而使用正常人會用的方法,使用並查集把相等級別的點合成

原创 HDU 1156 Brownie Points II 思維+線段樹+離散化

這個題的線段樹倒還沒有特別難,只是想到如何去用這個線段樹比較麻煩。這裏我們動態地想象這整個過程,當豎線在最左邊時,對於某個橫線,大於線的縱座標,就是第一象限,就是st的得分;小於這個縱座標,就是第四象限,就是ol的得分。我們把每個點的這兩

原创 Codeforces 1009 E Intercity Travelling 思維+期望

按官方題解的說法,第i公里的難度,是diffi=a12+a222+⋯+ai−12i−1+ai2i−1diffi=a12+a222+⋯+ai−12i−1+ai2i−1。 這麼一來,我們可以得到這樣的關係: diff1=a1diff1=a1,

原创 HDU 1024 Max Sum Plus Plus 基礎dp

一開始是這麼想的,對於每一個區間,取到一個數的時候,要麼就取這個數,要麼就不取這個數,取到取不到,結合前面那個點是取到還是沒取到的狀態,可以寫出一個弱智的轉移方程來。然後,我就因爲無法充分地降維放棄了這個想法。其實大佬們是這樣做這個題的,

原创 HDU 1069 Monkey and Banana 基礎dp

真麼氣死我了。。。想了兩個小時,想出了正確的解法,結果大腦疲勞掛機,突然以爲每種箱子只有一個,然後一念之差又去查題解了,也真不辱沒我dp黑洞的名號。。。 一個箱子翻來覆去也只有六種擺法,一種箱子頂多也就以六種一下的擺法擺放小於六次,所以乾

原创 HDU 1074 Doing Homework 狀壓dp

狀態數不多,做到每一個作業所用的罰時和前面已經做了哪些作業密切相關,還有其他一些性質都和狀壓dp非常契合,那麼就是他了。 #include<iostream> #include<cstdio> #include<string.h> #i

原创 Codeforces 979D Kuro and GCD and XOR and SUM 字典樹+位運算+思維

第二次做到這種帶異或的題要建字典樹的,第一次不會,第二次又沒想出來,這筆帳先記下了。。。異或這個東西就是,題目讓你求的東西,往往跟它每一位密切相關,跟別的關係不大,所以它才總被用來建字典樹。。。這個題的第二種操作,有三個條件,一個是整除的

原创 HDU 1011 Starship Troopers 樹形dp

You, the leader of Starship Troopers, are sent to destroy a base of the bugs. The base is built underground. It is actu

原创 HDU 2473Junk-Mail Filter 並查集

一開始我犯的錯誤是這樣的:刪除節點的父親設成一個沒用過的新節點。這種做法非常之錯誤,因爲一旦進行路徑壓縮,煞費苦心申請的新節點就全完了。我們一想,爲啥刪除並查集裏的節點這麼難呢?都是因爲有很多祖先節點呀!所以我們一開始就不把祖先結點設成實

原创 HDU 3038 How Many Answers Are Wrong 帶權並查集

最近一連做了好幾道就着區間建圖的圖論題,發現建圖的時候都很喜歡把區間看成兩個前綴和之差,我小叮噹長見識了。這道題也是這樣。一開始的時候想讓r數組表示當前點到其祖先這個區間(包含兩端點),後來要路徑壓縮了,發現情況不大對頭。。。前綴和大法好

原创 HDU 1829 A Bug's Life 帶權並查集

之前也寫過兩次帶權並查集,但是並沒有理解新開那個記錄權值的數組的意義,不知怎麼當時都歪打正着把題給(憑人品)做出來了。今天又按照以前錯誤的想法去做帶權並查集,果不其然一下子就做錯了。於是虛心學習,瞭解到新開的那個數組是用來記錄當前節點和祖

原创 HDU 3047 Zjnu Stadium 帶權並查集

衆所周知,我們做這種種類並查集,喜歡開一個數組,用向量的思想去記錄和計算當前點和它祖先的關係。這個題也一樣,按部就班把式子寫上就行了,建圖也很容易想。 #include<iostream> #include<cstdio> #inclu

原创 HDU 1317 XYZZY SPFA

這題一舉刷新了我對SPFA的認知,不同的入隊次數有不同的意義,我小叮噹先記下了。 #include<iostream> #include<cstdio> #include<string.h> #include<algorithm> #i

原创 HDU 1224 Free DIY Tour DAG最長路

DAG最長路可以用動態規劃或者spfa的方法求。逛了一圈論壇,看見有人說dijkstra也可以,但我自己寫了個dijkstra卻WA了,還是太菜了呀。 #include<iostream> #include<cstdio> #inclu