原创 lightoj 1151 概率dp + 高斯消元

鏈接:vjudge.. 題意:10*10的地圖,不過可以直接看成1*100的,從1出發,要到達100,每次走的步數用一個完美的大小爲6的骰子決定。地圖上有A和B,A和B都使你跳躍,不過一個是往前跳,一個是使你往後跳。。問從1走到100的期

原创 POJ 1873 凸包+枚舉

題意:給你n棵樹,每棵樹都有它的座標,價值,長度。現在要砍掉一些樹,然後用這些樹產生的木材(就是長度和)能夠把其他的樹圍起來(剩下的樹的凸包的周長),找到價值最小的解,如果價值相同,就選砍掉較少的樹的解 思路:就是枚舉+求凸包周長,需要有

原创 概率dp ZOJ 3329

題意:給三個骰子,分別有k1,k2,k3個面,每個面朝上的概率相同。自己玩遊戲,有一個計時器,計數器開始時爲0,每次扔骰子,如果第一個爲a,第二個爲b,第三個爲c就把計數器清零,否則計時器加上當前三個骰子的和,問當計數器大於n是的期望是多

原创 hash 亂搞=。=

題目鏈接:http://acm.neu.edu.cn/hustoj/problem.php?id=1588 題意:給出路由器的轉發表,然後對於每組詢問,輸出應該從哪個端口出去。需要滿足最長掩碼匹配,如果有多個匹配,輸出端口最小的那個 思路

原创 POJ 2653 判斷線段相交

題意:n個線段,一個一個的放,問最後沒有被壓住的都有哪些(貌似不用考慮端點?題中沒細說) 思路:n有點大,可以考慮用兩個隊列(不過比直接算慢了點,因爲用了stl?),或者是直接算,如果沒有和後面的相交就可以,否則跳過 代碼: #inclu

原创 POJ 1696 向量的點乘

題意:有個東西,要喫地圖上的點,但是隻能直走或者向左拐,而且不能與之前的路線相交,問最多能喫多少 思路:向左拐的話開始以爲是叉乘,後來天真的亂寫錯了之後看題解,發現最多能喫多少完全是坑,因爲能全喫完= =,其實畫一畫完全能發現,就是從最下

原创 POJ 2826 幾何/兩條線段的各種情況。。

題意:給兩個木板,問這兩個木板能接多少水 思路:首先,如果有一個平行於x軸的,或者兩個不相交,或者重合的情況下答案就是0.00。相交的時候分爲兩種情況,一種是斜率不同,這個很好處理,就是較低的點做個平行於x軸的直線,然後圍成的三角形的面積

原创 POJ 2096 概率dp

題意:給一個程序,甲每天能發現一個bug,bug分爲n種,可以發生在s個位置,每次發現bug的位置是隨機的且每次每種bug發生的概率都是1/n*s,問發現了n種和s種位置的bug都發現了的時候的概率 思路:啦啦啦~百度的題解~用dp[i]

原创 FZU 2105 線段樹

題意:明顯的線段樹,對一個區間進行操作,操作包括與,或,異或,求和四種,也就是三種操作(均爲位運算),一個詢問。不過每個數字都很小,[0,16],這很奇怪,而且位運算每位之間是獨立的,所以可以用四個線段樹分別維護每一位,求和的時候求四次,

原创 POJ 1228 穩定凸包

題意:給出n個點,這n個點在凸包的邊上或者點上。問僅由這 幾個點能否確定凸包的形狀。。 思路:考慮什麼情況下不能是穩定的凸包,就是某個邊上只有兩個點,然後再往外面擴一個就可以形成一個新的凸包,如果邊上還有一個點的話, 那麼就不能添加新的點

原创 lightoj 1265 概率dp

題意:英文不難(因爲我都能看懂。。),大意就是在一個荒島上只有你和其他的一種吃人的動物和被吃的動物,然後題中說明了相遇時發生的事件,食肉動物數目爲0的時候可以逃生,問最後成功逃生的概率 思路:推推推的就寫出了轉移方程,因爲C(n,2)忘了

原创 POJ 3744 水概率dp+水矩陣快速冪

思路:很水的概率dp,很水的矩陣快速冪,就是從當前點推出從當前點到後兩個點的概率,然後因爲n比較大,所以用矩陣快速冪優化(不過我寫的這個還是跑得慢= = 代碼: #include<cstdio> #include<algorithm> #

原创 POJ 3678 2-sat,基礎題

鏈接:http://poj.org/problem?id=3678 代碼: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #in

原创 BestCoder Round #23 1003 Cities

題意:雖然有中文解釋,不過還是說下,給一個n個節點的樹,然後找到k個點,讓這k個節點距離的期望最小。這裏的期望是這麼算的,從k個點中隨機選取兩個點(可以是一個點),然後就是距離的和除以k*k,最終結果要求乘上k*k,也就是這個子樹的任意兩

原创 POJ 3233 矩陣快速冪(做的快速冪的第一道題你敢信?

題意:很清楚 = = 思路:剛開始是二分+二分,就是求等比數列的前一半,然後前一半乘一個A^(k>>1)就是後一半的值,然後前後加起來,如果是奇數,那麼再把這位加上,這樣搞完了,過了,不過很慢。。然後百度了一下題解,發現另一種做法是構造一