description
無限大正方形網格裡有n個黑色的頂點,所有其他頂點都是白色的(網格的頂點即座標為整數的點,又稱整點)。每秒鐘,所有內部白點同時變黑,直到不存在內部白點為止。你的任務是統計最後網格中的黑點個數。 內部白點的定義:乙個白色的整點p(x,y)是內部白點當且僅當p在水平線的左邊和右邊各至少有乙個黑點(即存在x1 < x < x2使得(x1,y)和(x2,y)都是黑點),且在豎直線的上邊和下邊各至少有乙個黑點(即存在y1 < y < y2使得(x,y1)和(x,y2)都是黑點)。
input
輸入第一行包含乙個整數n,即初始黑點個數。以下n行每行包含兩個整數(x,y),即乙個黑點的座標。沒有兩個黑點的座標相同,座標的絕對值均不超過109。
output
輸出僅一行,包含黑點的最終數目。如果變色過程永不終止,輸出-1。
sample input
0 22 0
-2 0
0 -2
sample output
資料範圍
36%的資料滿足:n < = 500
64%的資料滿足:n < = 30000
100%的資料滿足:n < = 100000
我們發現,其實新變成的點是沒有任何*用的
反正大概就是有很多線段,求一下交點什麼的。。
這個的話掃一下,用個線段樹維護一下就好了
具體看**,不想寫了
#include
#include
#include
#include
using
namespace
std;
const
int n=100005*2;
int n;
struct qq
s[n];
int x1[n],x2[n];//表示x座標是這時的最小和最大
int y1[n],y2[n];//表示y座標是這時的最小和最大
bool cmp (qq a,qq b)
void prepare ()
xx=s[n].tx;
sort(s+1,s+1+n,cmp1);
s[1].ty=1;
for (int u=2;u<=n;u++)
yy=s[n].ty;
for (int u=1;u<=n;u++)
/* printf("\n");
for (int u=1;u<=n;u++) printf("%d %d\n",s[u].tx,s[u].ty);
printf("\n");
for (int u=1;u<=xx;u++) printf("%d %d\n",x1[u],x2[u]);
printf("\n");
for (int u=1;u<=yy;u++) printf("%d %d\n",y1[u],y2[u]);
printf("\n");*/
}struct qy
a[n];int cnt=0;
struct qa
tr[n*2];int num=0;
bool cmp2 (qy x,qy y)
void update (int now)
void change (int now,int l,int r)
update(now);
int s1=tr[now].s1,s2=tr[now].s2;
int mid=(tr[now].l+tr[now].r)>>1;
if (r<=mid) change(s1,l,r);
else
if (l>mid) change(s2,l,r);
else change(s1,l,mid),change(s2,mid+1,r);
}int get (int now,int x)
void solve ()
sort(a+1,a+1+cnt,cmp2);
/*for (int u=1;u<=cnt;u++)
printf("%d %d %d\n",a[u].x,a[u].y,a[u].z);*/
bt(1,yy);
int i=0;
for (int u=1;u<=cnt;u++)
ans=ans+a[u].z*get(1,a[u].y);
}printf("%d\n",ans);
}int main()
BZOJ1818 Cqoi2010 內部白點
給定平面上的一些黑點,其它位置都是白點,乙個白點如果上下左右都有黑點就會變成黑點,求最終會有多少個黑點 就是求交點個數 離散化後,取出所有線段,然後沿任意乙個軸朝著乙個方向掃,然後把平行於另乙個軸的線段用端點記錄,掃到一端就在樹狀陣列裡 1,另一端 1,樹狀陣列求個區間和貢獻答案即可 const m...
bzoj1818 Cqoi2010 內部白點
description 無限大正方形網格裡有n個黑色的頂點,所有其他頂點都是白色的 網格的頂點即座標為整數的點,又稱整點 每秒鐘,所有內部白點同時變黑,直到不存在內部白點為止。你的任務是統計最後網格中的黑點個數。內部白點的定義 乙個白色的整點p x,y 是內部白點當且僅當p在水平線的左邊和右邊各至少...
bzoj1818 Cqoi2010 內部白點
time limit 10 sec memory limit 64 mb submit 1218 solved 570 submit status discuss 無限大正方形網格裡有n個黑色的頂點,所有其他頂點都是白色的 網格的頂點即座標為整數的點,又稱整點 每秒鐘,所有內部白點同時變黑,直到不存...