矩形切割 衛星覆蓋

2021-06-05 19:12:02 字數 1338 閱讀 3975

衛星覆蓋

cover

sercoi(space-earthresource cover-observe lnstitute)是乙個致力於利用衛星技術對空間和地球資源進行覆蓋觀測的組織。現在他們研製成功一種新型資源觀測衛星-sercoi-308。這種衛星可以覆蓋空間直角座標系中一定大小的立方體空間,衛星處於該立方體的中心。

其中(x,y,z)為立方體的中心點座標,r為此中心點到立方體各個面的距離(即r為立方體高的一半).立方體的各條邊均平行於相應的座標軸。我們可以用乙個四元組(x,y,z,r)描述一顆衛星的狀態,它所能覆蓋的空間體積。

由於一顆衛星所能覆蓋的空間體積是有限的,因此空間中可能有若干顆衛星協同工作。它們所覆蓋的空間區域可能有重疊的地方,如下圖所示(陰影部分表示重疊的區域)。

寫乙個程式,根據給定的衛星分布情況,計算它們所覆蓋的總體積。

輸入輸出

輸入檔案是inpu.txt。檔案的第一行是乙個正整數n(1<=n<=100):表示空間中的衛星總數。接下來的n行每行給出了一顆衛星的狀態,用空格隔開的四個正整數x,y,z,r依次表示了該衛星所能覆蓋的立方體空間的中心點座標和半高,其中-1000<=x,y,z<=1000,1<=r<=200。

輸出檔案是output.txt。檔案只有一行,包

括乙個正整數,表示所有這些衛星所覆蓋的空間總體積。

樣例

input.txt

0 0 0 3

1 –1 0 1

19 3 5 6

output.txt

求體積並有很多方法,這個矩形切割的方法是最簡單,最容易實現的。。其基本思想就是離散化,把所有點離散化出來、、具體實現沒有多少可以講的,很淺顯。

很多統計問題都可以用矩形切割來實現。另外矩形切割可以很容易推廣到m維,我還沒有實現過。

#include long x1[110];

long x2[110];

long y1[110];

long y2[110];

long z1[110];

long z2[110];

long n;long ans=0;

void cut(long fx1,long fx2,long fy1,long fy2,long fz1,long fz2,long i)

if (fx1x2[i])

if (fy1y2[i])

if (fz1z2[i])

}int main()

printf("%ld",ans);

return 0;

}

線段樹 衛星覆蓋(NOI97) 矩陣切割

sercoi space earth resource cover observe lnstitute 是乙個致力於利用衛星技術對空間和地球資源進行覆蓋觀測的組織。現在他們研製成功一種新型資源觀測衛星 sercoi 308。這種衛星可以覆蓋空間直角座標系中一定大小的立方體空間,衛星處於該立方體的中心...

矩形覆蓋問題

問題描述 用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。現在問用8個2 1的小矩形無重疊地覆蓋乙個2 8的大矩形,總共有多少種方法?矩形如下 分析 我們可以把2 8的覆蓋方法記為f 8 用第乙個1 2的矩形去覆蓋大矩形的最左邊時有兩個選擇,豎著放或橫著放。如果豎著放,那麼右邊還剩2 7的矩形區域,這...

58 矩形覆蓋

矩形覆蓋 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?斐波那契數列 2 n的大矩形,和n個2 1的小矩形 其中target 2為大矩陣的大小 有以下幾種情形 1 target 0 大矩形為 2 0,直接return ...