原创 POJ 1947 樹形 DP + 分組揹包

做這個題的時候實在太虛了。。。 狀態都搞不清楚怎麼來的。 首先,我們不知道到底我們切出來的那棵樹的樹根到底是哪個。所以,有必要枚舉一下樹根。這樣足以表示所有狀態 然後,對於每個樹根來說,他做的是一個 分組揹包,每個分組裏面只能取一個物品的

原创 SGU 271 好久不寫題,腦袋生鏽了 奇怪的隊列。。

可以逆置前 K 個書名。 操作比較多,一看就是數據結構的題目。 操作只涉及前 K 個,所以,我用一個棧來保存不會被操作的數據。需要被逆置或者增加的數據我使用一個可以交換隊頭隊尾的隊列來完成。 隊列的大小是 K ,如果滿了就從隊頭(最下面的

原创 LCA & RMQ 模板 POJ 1330

就是模板啊。。 這個題用 O(n) 的LCA 也能過,畢竟只有一次查詢。 #include <stdio.h> #include <iostream> #include <queue> #include <algorithm> #inc

原创 POJ 2559 最大矩形。。

棧的應用,計算每個矩形往左往右最多能擴展到哪裏。 然後再枚舉一遍 O(n) 的 #include <stdio.h> #include <iostream> #include <queue> #include <algorithm> #

原创 POJ 1724 記憶話搜索dp

計算一個有向圖從 1 到 N 在滿足費用不超過K的前提下最短路是多少。。。 就是dp 狀態是 dp[i][j] i 是現在是第 i 個點 j 是這個點費用爲 j ,裏面包含的是最短路程。 一個簡單的剪枝是存下當前能到 n 點的最短路程,在

原创 SGU 148 枚舉出奇蹟 單調性以及前綴和

。。。。題目不難。。很多技巧。。 解題報告:講的真好 這種題感覺和單調隊列優化的問題差不多。 首先,最重要的一點是目標是最後一層,所以,當我不直接對最後一層用錢時,我選擇一層開始用錢施壓,則,從這一層到最後的水必須都得到最後一層,否則沒有

原创 SGU 226

好長時間沒有寫題目了。 今天開始慢慢刷 SGU ,SGU 上面的數據是坑。。都出的特別簡單。 這道題就是拆點,每個點拆開成三種顏色,有顏色的邊只能連在不同顏色的點上。 因爲初始點結束點各有3個。單獨寫有點煩。加一個原點,一個終點。最後長度

原创 POJ 1062 最短路 dijskra + 枚舉

ZWJ 推薦的一道最短路神題 等級限制這個條件可以枚舉所有符合條件的區間的點,從最高點到酋長的等級。 然後就是求最短路了。算是 dijstra 的模板吧。 #include <stdio.h> #include <iostream> #i

原创 POJ 3368 區間數字出現最多次數

因爲序列是不減的,所以應該是 233333 這樣的序列,我們可以從下面二分的序列得到我們想要的序列,所以可以用線段樹來做,普通的區間合併。 分類是 RMQ。。一會再寫的 RMQ 版本的。。 #include <stdio.h> #incl

原创 二分解單調函數

POJ 3273 二分最小值 #include <stdio.h> #include <iostream> #include <queue> #include <algorithm> #include <map> #include <v

原创 HDU 3033 分組揹包

在揹包九講裏還是在哪裏看到的題目了。。。 當時沒做出來,重新做了一下。 和傳統分組揹包不一樣的是,這次每個組裏面不止選一個了,對於每個組,我們還要做一個 01揹包 。 做 01揹包的時候要一個一個物品的dp...還有注意節省空間的時候寫正

原创 SGU 230 拓撲排序

利用拓撲排序,判斷環即可。 #include <stdio.h> #include <iostream> #include <queue> #include <algorithm> #include <map> #include <vec

原创 Vim 查找替換

查找   / 向下查找  ? 向上查找  n 繼續向下查找  N 繼續向上查找 下面轉自 http://andyss.blog.51cto.com/315552/131652/ 語法爲 :[addr]s/源字符串/目的字符串/[opt

原创 SGU 397 鏈表 或者 兩個棧。

一開始覺得這個題要平衡樹來做。。。 畢竟要動態的插入。。 畢竟啊,平衡樹的插入是 logn 的是因爲他一開始不知道把元素插入到哪裏。 通過尋找,然後才插入的,這個我一開始就知道他應該插入哪裏,所以,根本用不着平衡樹,鏈表就OK了。 雖然很

原创 Vim 多窗口

一.命令行多窗口參數        vim -o file1 file2 ...  #水平打開多窗口,    vim -O file1 file2