原创 zoj3734

題意:一棵有根樹,每個節點都有一個value值和屬性(LICK或是 CANDLE)。你可以通過反轉一些點的屬性,反轉一個點時候,它的整個子樹都會被反轉屬性。有些點反轉消耗代價爲X,有些爲Y。你的目標的是使得LICK的value和最大。 解

原创 FZU 2144(幾何+貪心區間覆蓋)

題意:三維空間給出n個蚊子的初始位置(ax,ay,az)和移動趨勢(dx,dy,dz),那麼每個蚊子座標隨時間變化的函數就是(ax+dx*t, ay+dy*t, ax+dz*t)。每次射殺一槍,可以把距離原點距離len之內的蚊子全部殺死

原创 javascript實現貪喫蛇

<html> <head> <style> body { background:#444; } .rect { border:1px solid #94F; width:680px; height:680px; } .gridre

原创 hdu4848

剪枝暴力搜索。 代碼:/****************************************************** * @author:xiefubao ********************************

原创 486E - LIS of Sequence(LIS)

題意:給一個長度爲n的序列,問每個數關於序列的LIS(longest increasing subsequence)是什麼角色。這裏分了三種:           1、此數沒有出現在任意一條LIS中           2、此數出現在至少

原创 poj 1986(離線查詢點對最近公共祖先)

題意:給一棵樹,查詢一些點對的距離 解法:隨便找一個點建立有根樹,然後轉化爲求點對最近公共祖先問題。兩點的距離等於他們與最近祖先的距離和。查詢的方法是dfs+並查集離線查詢。思想是,dfs過的爲回溯的點的parent全部指向自己本身,v

原创 URAL 1486(二維字符串hash)

題意:一個最大500*500的字符矩陣,求最大的兩個相同的字符正方形。正方形可以有重疊部分但不能重合。 解法:首先是二分正方形的長度,然後判斷某個長度存在時候計算字符矩陣的二維hash值,二維hash的方法是: 這樣子拓展的ha

原创 ural 1143. Electric Path(凸包上最短哈密頓路徑)

題目鏈接:http://acm.timus.ru/problem.aspx?space=1&num=1143 題意:逆時針給一個凸包的n(n<=200)個頂點座標,求一個最短哈密頓路徑的長度。 解法:求最短哈密頓本身是一個NP問題,但是

原创 javascript實現貪吃蛇

<html> <head> <style> body { background:#444; } .rect { border:1px solid #94F; width:680px; height:680px; } .gridre

原创 hdu3685(幾何重心與凸包結合)

題意:給一個多邊形(有可能是凹多邊形)。問有多少種能夠使得它穩定放置的方式。當然穩定的原則就是重心做垂線在支撐點之內。 解法:因爲有可能是凹多邊形,所以先求出多邊形的凸包,這是在放置時候會接觸地面的所有點。然後將重心與每天凸邊判斷是否穩

原创 hdu4747 mex 線段樹

題意:給一個序列不超過200000個元素,定義mex(i,j)是區間[i,j]之間所沒有的最小非負整數。求sum(mex[i,j])對於所有1<=i<=j<=n; 解法:線段樹。先求出mex(1,1),mex(1,2),mex(1,3).

原创 hdu5044(二分)

題意:一個樹上建兩個加油站,使得所有點到達其最近加油站的最大距離最小。 解法:二分答案。關鍵時二分時候,要最合理話佈局兩個點的位置,做法是處理出來樹的直徑,然後在直徑兩端分別向中間移動二分的x步的兩個點佈下加油站。貪心可以證明正確性;

原创 poj1201(二分+線段樹)或(差分約束系統)

題意:數軸上每個位置爲0或是1,給n(1 <= n <= 50000)個區間[ai, bi],每個區間內至少有 ci 個1.0 <= ai <= bi <= 50000,1 <= ci <= bi - ai+1。問數軸上至少有多少個1可

原创 poj1655(樹的重心)

題意: 求樹的重心;重心定義:以此節點爲根的最大子樹節點個數最小。 解法:dfs 代碼:/****************************************************** * @author:xiefuba

原创 zoj1283(LIS)

題意:寶藏在一些點中,只能從(0,0)出發,每次只能向右(x+1,y)或是向上走(x,y+1)。問要走幾趟才能取完寶藏。 解法:按x,y分別爲第一二關鍵字排序,那麼一趟下來,y座標是個非遞減序列。然後轉化成問y方向能由最少爲多少的非遞減