原创 八數碼 IDA* A *比較總結 HDU1043 POJ1077

   這是一個經典的搜索題,做法很多可以詳見此題的八境界做法,這裏只闡述A*與IDA*算法。     A*算法:     簡單來說是帶估值函數的廣搜。不同之處在於:對每個放入隊列(open table)的節點計算估值函數h(x),然後進行

原创 hdu5691 dp+__builtin_popcount()

思路:定義dp【i】【j】:i狀態下,以a[j]結尾的最大排列 ,i爲0到1<<n。(用二進制的方式表示:如果該位上的數選擇了,則對應位置位1,否則爲0).狀態轉移:dp[i|(1<<k)][k]=max(dp[i|(1<<k)][k],

原创 hdu 5695(類拓撲排序+貪心)

思路:這道題如果不考慮兩位同學兩兩間相互討厭,那麼直接貪心就可以了,但是增加了兩兩間相互討厭,那麼可以把它們之間的這種關係建圖來模擬。如果a不希望b排在他的前面,則a與b建一條a指向b的有向邊。那麼這就有點像拓撲排序了(網上說這是拓撲排序

原创 UVA11464

題意思路參考《訓練指南》 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define rep(i,n) for(int i=0;i<n

原创 wannafly10 b題 思維+類lcs 好題

題意:中文首先吐槽一下這道題的數據太水了,賽後看別人的代碼很多連樣例都過不了的竟然過了這道題。思路:這道題可以看成是判斷密碼鎖和密碼是否存在最長公共子序列。代碼:#include<cstdio> #include<cstring> usi

原创 wannafly10 c題 dfs+思路

這道題開始先直接dfs,然後tle了,然後換湯不換藥bfs一遍,又tle了。看了別人的思路,恍然大悟。TLE思路:建圖,然後對於每次轟炸,以轟炸的節點爲根進行dfs,更新相鄰節點損毀的次數。TLE寫起來簡單粗暴,但結果也很粗暴。。。AC思

原创 loj#550 思維

題意:中文 思路:因爲找任意兩點橫座標之差絕對值加縱座標之差絕對值的最大值,所以可以將橫縱座標分開來考慮,第一行的必定與最後一行相差最大,以此類推,第二行與倒數第二行匹配.....差值便是sum(n/2+1,n)-sum(1-n/2),但

原创 組合數學兩題

[CodeChef-C3PRB3] 題意:給你一個數組,然後問其中的奇數個數的子集的中位數和是都少。 思路:先對數組內的元素進行一次排序,然後對於每個數字,選擇在它之前和在它之後的較小值m。然後c(m,i)(i from 0 to m)

原创 01揹包 uva12563+運算符重載

題意:見紫書。 思路:01揹包。 一開始自己寫了個wa+tle的版本。wa的原因主要是,剛開始dp都是0,根據代碼,第一首歌就變成必選。這是以後需要注意的地方。 #include<cstdio> #include<cstring> #in

原创 拯救007 迪傑斯特拉最短路解決

思路:直接建圖,走一遍迪傑斯特拉,最後比較一下能到達邊界點的最短路徑就可以了。正確性還沒具體驗證,不過樣例過了。#include<cstdio> #include<iostream> #include<cstring> #include<

原创 uva11300

題意:見訓練指南 思路:列方程,化簡,點距離和最小。 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> us

原创 藍橋 牌型總數 dfs(暴力)

題目: 牌型種數: 小明被劫持到X賭城,被迫與其他3人玩牌。  一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。  這時,小明腦子裏突然冒出一個問題:  如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序

原创 這幾天做的 水題總結

[HihoCoder-1696] 計算折線的中點。(題號hihocoder) 思路:先計算折線的總長度,然後算出一半的長度,然後後面對每段折線進行求和,只要和值小於一半就繼續求和,知道大於等於如果大於則通過多出來的部分,然後根據勾股定理(

原创 goj 1460 dag的最小路徑覆蓋

思路:直接把每一個相鄰的植物都用邊連起來,然後求一次最小路徑覆蓋就可以了。 注意:匈牙利算法返回1代表找到一條增廣路,對應一個匹配。 最小路徑覆蓋=最大獨立集=節點數-最大匹配數。 #include<cstdio> #include<cs