標籤:
1、前言
又是綠書上的題目。這種畫風感覺還是好些的,雖然都是遠古時代的。今天題目感覺難度適中,但是太過於偏向動態規划了吧。。。還有搜尋傻逼題亂入。
2、Sort 產品排序
大概題意:給出n個產品,每個產品有加工時間和冷卻時間。現有兩台加工機,每台加工機同一時間只能加工一個產品。產品加工完後就進入冷卻時間。要求在儘可能短的時間內完成所有產品的所有工序,求最短時間。
題解:
動態規劃。設存在兩個產品x和y,y的冷卻時間大於x,且x排在y之前。如果x和y是相鄰的,可以發現在這種情況下完成時間是max{xa+xb,xa+ya+yb}=xa+ya+yb;如果x排在y之後,則完成時間是max{ya+yb,xa+ya+xb}<=xa+ya+yb,所以y在x前面一定不會劣於x在y前面。所以我們按照b排降序,一定能找到最優解。
設f[i][j]表示前i個產品,其中第一個機器上的加工時間之和為j時的最優解,s[i]=a[j](j∈[1,j])。狀態轉移方程:f[i][j]=min{max{f[i-1][j-a[i].x],j+a[i].y},max{f[i-1][j],s[i]-j+a[i].y}},分別表示放入機器1還是機器2。
3、Ball 分球
大概題意:將n個有標號的球放入m個沒有區別的盒子中,每個盒子至少有一個球,求方案數。
總結:我不管是什麼第二類斯特林數云云。。。反正我又是找規律發現出來的。
題解:
動態規劃第二彈。設f[i][j]表示將前i個球放入j個盒子中的方案數,f[i][j]=f[i-1][j-1]+f[i-1][j]*j。計算的時候要高精度加乘法。
4、Map 地圖
大概題意:在一個n*m的0-1矩陣,求1的極大連通塊個數。
題解:
搜尋傻逼題亂入一大堆動態規劃題目中。
5、Polygon 座標變換
大概題意:給定平面中n個點,求一個凸包,使得凸包的頂點含給定的點最多。凸包邊上不能有給定點,且原點必須在凸包上。
總結:這道題看上去是計算幾何的題目,但是在求解過程中,計算幾何的成分並不是很多。我試著直接用求凸包的方式去求,但是被卡在了共線的問題上。
題解:
因為要選盡量多的點,我們同樣地可以考慮用動態規划去取最優解。狀態比較特殊,每次的狀態都是以邊為主體,f[i][j]表示當前選擇了(i,j)這條邊所求得的最多的邊數。首先初始狀態顯然i=1,最後求得答案的狀態顯然j=1。因為點數不多,我們可以根據當前的邊,然後選擇其他所有沒有選的點,首先判斷是否滿足凸包的要求(利用叉積判斷這個點在當前線的左側還是右側),然後再找到最佳的點。
所以說從頭到尾真正和計算幾何有緊密聯絡的地方就是一個計算整數叉積的地方,其他的部分就是最簡單的動態規劃。
[題解+總結]20151010