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的費用 就是負價值 求出最大價值 神奇的最小割,太強了 建圖...