UOJ 242 UR 16 破壞蛋糕

2021-07-26 07:02:49 字數 2038 閱讀 6206

傳送門

貌似出題人給的方法一點都不友好qwq

那個如果乙個平面是有限的,那麼它被分為兩部分,這兩部分都是有限的。

假設我們要求的那條直線是y軸(不是也可以轉),那麼考慮對直線左右分別計算平面是否有限。

就直線右側而言,我們把交點按照順序排好。交點ya

和yb 之間的區間對應平面是有限的,當且僅當存在yc

和yd ,滿足yd

≤yb≤

ya≤y

c ,且kc

。 其中c,d可以是a,b,k代表交點對應直線斜率。

感性認識一下吧……

那麼先說一下把要求的直線旋到y軸的原因:好判斷啊,一邊的直線斜率全是連續的了。但是旋轉後平行難判,要用原始座標判斷。

那麼考慮一下如何維護相交。

我們肯定是維護乙個資料結構,然後來去除掉一些我們不需要的資訊。那麼看看下圖所示的情況:

如圖所示,紅線(a)和黑線(b)是已經處理完的直線,然後現在要進行計算的是藍線(c)

紅線和黑線滿足於這個關係yb且ka

那麼藍線如果要交黑線,肯定可以交紅線,而且交紅線可以封閉[y

a,yc

] 這一段區間(別吐槽我區間左右反過來的問題,我是從上往下考慮的),封閉的區間比與黑線交封閉的更大。

那麼實際上我們只是需要維護乙個序列(棧),滿足點對應的直線斜率遞減,加入序列的順序是從y座標大到小依次加入。

當有一條新直線來的時候,在序列中二分能交到哪,給區間頭尾打個標記(相當於差分)。

假如一條都交不到,加入序列(說明這條線斜率是目前最小)

直線左側做法和右側是完全一樣的,但是判斷與右側相反

最後按順序掃一下,假如直線兩側對應的區間都是有限,說明這段是有限的,反之無限。

#include
#include

#include

#define now e[i].k

#define n 100005

#define eps 0.00000000001

using

namespace

std;

bool f[n];

int l,r,mid,n,d[n],t,p[n];

long

double x1[n],y1[n],x2[n],y2[n],x,y;

long

long xx1[n],yy1[n],xx2[n],yy2[n];

struct mpoi

}e[n];

inline

void getpoi(const

int &i)

inline

bool cmp(const

int &i,const

int &j)

inline

void judge(const

int &f)

else d[++t]=i;

}int main()

for (int i=1;i<=n;i++) x2[i]-=x1[n],x1[i]-=x1[n],y2[i]-=y1[n],y1[i]-=y1[n];

long

double th=atan((y1[n]-y2[n])/(x1[n]-x2[n]))+3.14159265358979/2;

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

for (int i=1;iif (x2[i]1,e+n);

judge(1);

for (int i=1,tag=0;i<=n;p[e[i++].k]=0) if (tag+=p[now]) f[now]=1;

judge(0);

for (int i=1,tag=0;i<=n;i++) putchar(((tag+=p[now]) && f[now])?'1':'0');

}

UOJ 242 UR 16 破壞蛋糕

一句話題意 平面上有 n 1條直線,前 n 條直線把平面分成許多塊,這些塊有些面積有限,有些面積無限,而第 n 1 條直線不經過前 n 條直線的交點,且一定不和前 n 條直線中的任意一條平行,求第 n 1 條直線被前 n 條直線劃分成的 n 1 段中哪些在面積有限的塊裡,哪些在面積無限的塊裡。保證第...

uoj 242 UR 16 破壞蛋糕

uoj 考慮把那最後一條直線拎出來,並且旋轉到和 y 軸平行 其他直線同時一起旋轉 然後它和其他直線相交形成 n 1 個區間,現在要知道這些區間是否處在乙個面積有限的區域 可以發現一段在有限區域當且僅當區間的兩側區域都是有限的.所以對線的兩側分開考慮,先考慮左邊,如果直線的乙個區間旁邊的區域有限,那...

UOJ 192 UR 14 最強跳蚤

題目鏈結 暑期課第二天 樹上問題高階 具體內容看筆記部落格吧 題意n個節點的樹t 邊有邊權w 求滿足 u,v 上所有邊權乘積為完全平方數的路徑有多少條 看到 所有邊權乘積為完全平方數 想到完全平方數的特殊性 就是分解質因數後 質因數指數都為偶數 然後就想到分解邊權質因數 判質路徑邊權奇偶性 後者由於...