POJ 2318 TOYS(計算幾何)

2021-07-04 03:41:31 字數 1559 閱讀 4540

description

乙個矩形區域中有n條互不相交的線段,每條線段的上下端點分別在矩形的上下邊上,現給出該矩形區域中m個點的座標,保證點不在邊上,統計由這n條邊將矩形分成的n+1個區域中各有多少個點

input

多組用例,每組用例第一行六個整數n,m,xl,yl,xr,yr分別表示邊數,點數,矩形區域左上角的橫縱座標,矩形區域右下角的橫縱座標,之後n行每行兩個整數u和l表示該條邊上下端點的橫座標,最後m行每行兩個數x和y表示該點座標

output

對於每組用例,輸出每個區域的點數,每兩組輸出之間用空行隔開

sample input

5 6 0 10 60 0

3 1

4 3

6 8

10 10

15 30

1 5

2 1

2 8

5 5

40 10

7 9

4 10 0 10 100 0

20 20

40 40

60 60

80 80

5 10

15 10

25 10

35 10

45 10

55 10

65 10

75 10

85 10

95 10

0sample output

0: 2

1: 1

2: 1

3: 1

4: 0

5: 1

0: 2

1: 2

2: 2

3: 2

4: 2

solution

對每個點求出其左側最右邊一條邊即可推出其所在區域

code

#include

#include

#include

#include

#include

#include

using

namespace

std;

struct node

p[5555];

bool is_in(int x,int y,int a)//判斷某點是否在某邊的右側

int main()

//for(int i=0;i<=n+1;i++)

// printf("%d %d %d %d\n",p[i].x1,p[i].y1,p[i].x2,p[i].y2);

int cnt[5555]=;

while(m--)

for(int i=0;i<=n;i++)

printf("%d: %d\n",i,cnt[i]);

res++;

}return

0;}

POJ 2318 TOYS 計算幾何

點我看題 題意 用n個分隔板把乙個矩形分成n 1個部分,然後有m個點分布在這個矩形上,問每個區域上能有多少個點。分析 利用叉乘和二分解題。首先預處理出這些分隔板,然後對每個點進行二分,二分條件是看當前要判斷的點在隔板的左還是右,而利用叉乘正好可以判斷點在左還是右邊。include include i...

poj2318 TOYS(計算幾何)

那些年不想寫的計算幾何,總有一天要還。直接列舉點,列舉四邊形即可,只要用叉乘判斷點是否在兩條線段中間即可。o n m o nm o nm include include include include include using namespace std define ll long long d...

POJ 2318 TOYS(計算幾何入門)

題意 題意就是給你一連串的四邊形區域,再給你一些點,讓你判斷每個四邊形內 包括邊界有多少個點。很簡單的題目,用叉積就能判斷點和直線的關係。created by cqu cst wuerli include include include include include include include...