遊樂園決定在乙個n×m的廣場上舉辦一次頒獎晚會,總管要你幫忙搭建乙個舞台。
現在給你廣場的布置圖(規定地圖的上方為正北),有些位置需要布置為觀眾席(記為1),另一些是空地(記為0)。舞台只能在空地上搭建。
為了使晚會更加吸引人,平平覺得舞台應該是朝北的h—金字塔形。h—金字塔形舞台是由h個矩形舞台相接而成的,其中後方的矩形舞台的兩端必須超出在其前面的矩形舞台,且最小矩形面對的朝向為舞台的方向。下面給出幾個例項:
舞台的面積應該盡量大,輸出面積最大的朝北h—金字塔形舞台的面積。
第一行3個整數 n、m、h。
接下來n行,每行m個0或1,中間用乙個空格隔開。
乙個整數,表示最大的朝北的h—金字塔形舞台的面積。
如果沒有符合題意的h—金字塔形舞台輸出0。
4 6 2
0 0 1 0 0 1
0 0 0 0 0 0
0 0 1 0 0 0
0 1 1 0 0 0
10
樣例對應的最優方案如下圖:
×表示觀眾席
【資料規模和約定】
對於10%的資料 h=1;
對於40%的資料 h≤5;
對於100%的資料 h≤20;
對於100%的資料 n、m≤100。
dp。設f[ i ][ l ][ r ][ s ]表示帶第i行,選了l~r的範圍作為金字塔的第s層的最大面積。
2.新建一層:f[ i ][ l ][ r ][ s ]=f[ i-1 ][ l+1~r ][ l~r-1 ][ s-1 ]+r-l+1。
時間o(nm^3h)。
優化:邊做邊處理處g[ i ][ l ][ r ][ s ]表示到第i行,左端點大於l,右端點小於r,做了s層的金字塔的最大面積。
g[ i ][ l ][ r ][ s ]=max
複雜度o(nm^2h)。
空間複雜度(nm^2h)。
開滾動陣列——>(m^2h)。
#include#include#include#define i int
#define ll long long
#define f(i,a,b) for(i i=a;i<=b;++i)
#define fd(i,a,b) for(i i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define n 110
using namespace std;
i rd(i &x)
while(c>='0'&&c<='9')
x*=w;
}i n,m,h,a[n][n],f[2][n][n][21],g[2][n][n][21],ans,p=0;
i main()
} f(i,1,n)
else f[p][l][r][s]=0;}}
} }printf("%d\n",ans);
return 0;
}
珍惜這個舞台。。。
16張黃牌4張紅牌,結束了這場近似瘋狂的比賽。葡萄牙人,踏過了荷蘭人。下一場他們將面對球踢的醜陋的令人髮指的英格蘭。世界盃是乙個舞台。每乙個球員,教練,國家隊,都在這個舞台上上演自己足球生涯中最重要的表演。但表演是乙個團隊的專案,當某個人通過瘋狂的演出毀掉了這場演出時,他對不起台上所有的人,也對不起...
12 10每日部落格
今天記錄一下我在使用layui元件中的 的時候遇到的問題,就是如何將mysql讀取到的資料顯示在 元件中的url指向的就可以是後台的servlet,然後servlet向前臺傳遞的是乙個json資料,並且要按照官網中的案例進行返回,不然前台的介面無法載入資料並且會提示介面異常。這裡的json是 net...
人生舞台與理想
從小到大,人生舞台都是已經被設計好的。學生時代,人生舞台在校園,那個時代,我們讀書,考試,接著選擇學校,再迴圈 讀書,考試,再選擇學校。工薪時代,人生的舞台已經在工作單位,這個時代,我們被面試,工作,跳槽或公升遷,再迴圈 被面試,工作,跳槽或公升遷。本來,舞台有多大,理想就有多大,隨著舞台變大,變高...