u217 土地劃分

2021-09-28 09:56:55 字數 3000 閱讀 7418

time limit: 1 second

memory limit: 128 mb

【問題描述】

在dukeswood這塊土地上生活著乙個富有的農莊主和他的幾個孩子。在他臨終時,他想把他的土地分給他的孩子。他有許多農場,每個農場

都是一塊矩形土地。他在農場地圖上劃上一些直線將矩形分成若干塊。當他划直線時,他總是從矩形邊界上的某一點劃到另乙個矩形邊

界上的點,這條線的結束點將成為下一條線的起始點。他劃線時從不會讓任三線共點。例如下圖是某一種劃分結果。

劃分的起始點和結束點均以五角星標記。當他完成劃分後,他想要數一下劃出的土地的塊數以確保每個孩子都有一塊地。例如,上圖中土地

被劃分成18塊。然而這個莊主由於年邁常會數錯,因而他尋求你的幫助。

請寫乙個程式,輸入原來的土地尺寸及線段的位置,輸出劃分出的土地塊數。

【輸入格式】

第一行輸入地圖的寬度w(1<=w<=100)和高度h(1<=h<=100),均為整數。

第二行輸入線段數l(1<=l<=15)。

以下l+1行每行乙個整數座標(xi,yi),莊主劃的線段為(xi,yi)-(xi+1,yi+1),i=1,2,…,l。當然(xi,yi)必定在矩形的邊界上。

【輸出格式】

對於給定的輸入,輸出一行僅含乙個數,即劃分出的土地塊數。

【資料範圍】

sample input1

19 12

8 2 0

6 12

11 0

19 9

17 12

0 7

15 0

11 12

0 10

sample output1

18【題目鏈結】:

【題解】

一開始,如果一條直線都沒有;

則平面數為1;

畫一條線則平面數遞增1;變成2

再劃一條線(不與任何直線相交);則平面數再增加;變成3;

如果再劃一條線;和之前的1條線相交,則平面數不是增加1而是增加2了;則變成5;

如果這條線變一下,和之前的2條線相交,則平面數變成增加3;則變成6;即

則列舉線段i;再列舉線段1到i-1

總結一下就是,出現一條線段,平面數遞增,如果這條線段和之前的線段相交平面數再遞增(相交的座標要在平面內,所以有乙個座標的判斷,且不能在邊界上。)

已知兩條線段相交;

且知道

x0,y0,x1,y1

x2,y2,x3,y3;

相交的那個程式裡面有給出交點座標;

要把那些垂直和橫著的情況去掉;

【完整**】

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define ll long long

#define rep1(i,a,b) for (int i = a;i <= b;i++)

#define rep2(i,a,b) for (int i = a;i >= b;i--)

#define mp make_pair

#define pb push_back

#define fi first

#define se second

typedef pair pii;

typedef pairpll;

void rel(ll &r)

void rei(int &r)

const

int maxn = 16+5;

const

int dx[5] = ;

const

int dy[5] = ;

const

double pi = acos(-1.0);

struct abc

;abc xd[maxn];

int w,h,l;

ll ans = 0;

bool cross(int i,int j)

else

//-- --

if (y1==y0 && y3==y2)

return

false;

else

//| -

if (x1==x0 && y3==y2)

else

// -

if (y3==y2)

else

if (0

< xx && xx0

return

true;

return

false;

}}int main()

ans = 1;

rep1(i,1,l)

cout

<< ans << endl;

return

0;}

BZOJ3511 土地劃分

一眼最小割 考慮劃為s集代表a國,劃為t集代表b國 建圖 s連每個點流量va,每個點連t流量vb 對於每條邊,兩個端點點之間連雙向邊流量ec 新建乙個點x,s連x流量ea,x連兩個端點流量inf 再新建乙個點y,兩個端點連y流量inf,y連t流量eb 認為1號點va inf,vb 0 n號點va 0...

FZU Problem 1015 土地劃分

在dukeswood這塊土地上生活著乙個富有的農莊主和他的幾個孩子。在他臨終時,他想把他的土地分給他的孩子。他有許多農場,每個農場都是一塊矩形土地。他在農場地圖上劃上一些直線將矩形分成若干塊。當他划直線時,他總是從矩形邊界上的某一點劃到另乙個矩形邊界上的點,這條線的結束點將成為下一條線的起始點。他劃...

BZOJ3511 土地劃分

給出n個點,m條邊,每個點有a和b兩種形態,一開始1為a,n為b 給出va i 和vb i 表示第i個點選擇a和b形態的價值 每條邊給出x,y,ea,eb,ec,表示如果x和y都為a,則獲得ea價值,如果都為b則獲得eb價值,否則會得到ec的費用 就是負價值 求出最大價值 神奇的最小割,太強了 建圖...