模擬賽 矩形框 題解

2022-06-20 13:57:10 字數 791 閱讀 9492

題意:

給出n個矩形,求乙個面積最小的矩形,使其能容納這些矩形。

\(n \leq 6\)。

首先,通過列舉排列,確定這n個矩形的排列順序。

然後,按照這個順序,以此放置每個矩形。

把第乙個矩形放在左上角。

之後,列舉每個矩形x。為了使矩形盡量緊湊,這個矩形一定要緊挨在某個矩形y的右側。

列舉這個矩形y。

為了使矩形不重疊,再列舉每個矩形z。

如果矩形x與z在橫座標上有交集,那麼需要增大縱座標來使其不重疊。

注意剪枝。

實際實現中,兩次dfs可以合併為一次。

時間複雜度:約\(o((n!)^2n)\)。實際可以跑出\(n=8\)。

**:

#include int w[101],h[101],x[101],y[101],n,ans=99999999;

void dfs(int i,int w,int h,int p[101],bool bk[101])

for(int u=0;uty)

ty=y[b]+h[b];

}x[u]=tx;y[u]=ty;

dfs(i+1,tx+w[u]-1>w?tx+w[u]-1:w,ty+h[u]-1>h?ty+h[u]-1:h,p,bk);

} bk[u]=false; }}

int main()

;bool bk[101]=;

dfs(1,0,0,p,bk);

printf("%d",ans);

return 0;

}

opencv畫矩形框

rectangle 畫矩形 c mat類 void rectangle mat img,point pt1,point pt2,const scalar color,int thickness 1,int linetype 8,int shift 0 void rectangle mat img,c...

矩形框相關演算法

1,判斷兩矩形區域是否相交 實現 c struct rect judge whether two rects intersect bool isintersect rect rect1,rect rect2 除上面的演算法外,以前還用過一種演算法,通過計算兩個矩形框的中心點的距離。具體 就不貼上來了...

opencv 對於矩形框的操作

如果建立乙個rect物件rect 100,50,50,100 那麼rect會有以下幾個功能 rect.area 返回rect的面積 5000 rect.size 返回rect的尺寸 50 100 rect.tl 返回rect的左上頂點的座標 100,50 rect.br 返回rect的右下頂點的座標...