n個不同的顏色的不透明的長方形(1 <= n <= 1000)被放置在一張橫寬為a豎長為b的白紙上。這些長方形被放置時,保證了它們的邊與白紙的邊緣平行。所有的長方形都放置在白紙內,所以我們會看到不同形狀的各種顏色。座標系統的原點(0,0)設在這張白紙的左下角,而座標軸則平行於邊緣。
program name: rect1
input format:
(file rect1.in)
按順序輸入放置長方形的方法。第一行輸入的是那個放在底的長方形(即白紙)。
第 1 行: a , b 和 n由空格分開 (1 <=a, b<=10,000)
第 2 到n+1行: 為五個整數 llx, lly, urx, ury, color 這是乙個長方形的左下角座標,右上角座標(x+1,y+1)和顏色。
顏色 1和底部白紙的顏色相同。 (1 <= color <= 2500)
output format:
(file rect1.out)
輸出且僅輸出所有能被看到顏色,和該顏色的總面積(可以由若干個不連通的色塊組成),按color增序排列。
20 20 32 2 18 18 2
0 8 19 19 3
8 0 10 19 4
1 912 84
3 187
4 38
插入矩形(x3,y3,x4,y4)後,對矩形(x1,y1,x2,y2)進行切割。
我們可以歸納出矩形切割的思想:
procedure cut(x1,y1,x2,y2,direction)
var k1,k2
begin
case direction of
1:begin
k1 ← max(x1,x3) {計算線段(x1,x2),(x3,x4)交集的左邊界}
k2 ← min(x2,x4) {計算線段(x1,x2),(x3,x4)交集的右邊界}
if x1#include #include #include #include #include #include #include #include #include #include #define ll __int64
using namespace std;
struct node
f[1010];
int ans[10010];
void dfs(int lx,int ly,int rx,int ry,int t)
}int main()
NOI OJ矩形分割
描述 平面上有乙個大矩形,其左下角座標 0,0 右上角座標 r,r 大矩形內部包含一些小矩形,小矩形都平行於座標軸且互不重疊。所有矩形的頂點都是整點。要求畫一根平行於y軸的直線x k k是整數 使得這些小矩形落在直線左邊的面積必須大於等於落在右邊的面積,且兩邊面積之差最小。並且,要使得大矩形在直線左...
03 矩形分割
原題鏈結 總時間限制 1000ms 記憶體限制 65536kb 描述 平面上有乙個大矩形,其左下角座標 0,0 右上角座標 r,r 大矩形內部包含一些小矩形,小矩形都平行於座標軸且互不重疊。所有矩形的頂點都是整點。要求畫一根平行於y軸的直線x k k是整數 使得這些小矩形落在直線左邊的面積必須大於等...
矩形分割(二分)
描述 平面上有乙個大矩形,其左下角座標 0,0 右上角座標 r,r 大矩形內部包含一些小矩形,小矩形都平行於座標軸且互不重疊。所有矩形的頂點都是整點。要求畫一根平行於y軸的直線x k k是整數 使得這些小矩形落在直線左邊的面積必須大於等於落在右邊的面積,且兩邊面積之差最小。並且,要使得大矩形在直線左...