題意:有乙個n*m(1<=n,m<30)的網格,每個格仔是邊長為10公尺的正方形,網格四周是無限高的牆壁。輸入每個格仔的海拔高度,以及網格內雨水的總體積,輸出水位的海拔高度以及有多少百分比的區域有水(即高度嚴格小於水平面)。
解題方案:二分水位高度進行check,記所有網格中高度最低的格仔的高度為a[0],當沒有水的時候水位高度應該是a[0],此為水位高度的下限;當所有雨水都囤積到最低的格仔處時,水位高度為a[0]+v/100.0,此為水位高度的上限,接下來在區間[a[0] , a[0]+v/100.0]進行二分check即可。
#include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define for(i,k,n) for(int i=k;i=v) return true;
else return false;
}double found(double l,double r)
return l;
}int main()
{ //freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int case=0;
while(cin>>n>>m&&(n||m))
{for(i,0,n*m) cin>>a[i];
cin>>v;
sort(a,a+n*m);
double ans=found(a[0],a[0]+v/100.0);
int cnt=0;
for(i,0,n*m)
{if(a[i]
習題4 10 洪水 UVa815
演算法 競賽入門經典 第2版 第4章 函式和遞迴 習題4 10 洪水 uva815 感悟。2 反覆中英文對照,愣是沒看懂樣例中的water level is 46.67 meters.3 題意沒理解,程式設計就沒法開始。4 搜尋還是搜尋看到這副圖,馬上明白,本題很快就能弄懂,歸根結底,還是英文水平次...
演算法競賽入門經典 UVa815 Flooded
說實話,剛看到這題有點蒙,沒有什麼思路,第乙個蹦出來的東西居然是定積分那類的東西。這一題我歷經千辛萬苦,可是最終還是wa,最開始完成提交之後tle錯誤,重新修改了初始化就好了。之後提交是wa錯誤,發現在輸入1 1的情況下不能正常執行。幾經除錯,感覺應該沒有什麼問題了。提交還是wa,然後在debug裡...
紫書 習題 8 15 UVa 1617 (貪心)
先排序,然後每個線段先放右端點,然後往下放,如果不能放就整體往左移動,當不能往左移動的時候就ans 開始下乙個整塊。判斷能不能向左移動要用乙個變數儲存每個已經放了的區間中線段與左端點距離的最小值。include include define rep i,a,b for int i a i b i u...