1818 Cqoi2010 內部白點

2021-07-08 18:43:01 字數 696 閱讀 8545

題目真坑。。。。。。。。明顯不可能會出現-1的情況嘛

離散化+樹狀陣列

x,y座標分別排序,掃一遍,找出所有的橫線和豎線,統計出橫線、豎線上端點、豎線下端點。

對統計出的資料進行排序,關鍵字為y,當y值相同時,下端點優先於橫線優先於上端點。

從上往下依次掃瞄,掃到橫線時統計橫線左右端點內(開區間)的豎線數量,掃到豎線上端點時豎線數量+1,掃到下端點時豎線數量-1(上邊的優先順序因此確立)。

最後由於沒有統計原先存在的黑點,再加上即可。

#include#include#include#includeusing namespace std;

const int n=100000+5;

struct nodea[n];

struct segments[n*3];

int hash[n],tr[n],n,cnt,ans;

int gethash(int x)

bool cmp1(node a,node b)

void go()

int main()

sort(hash+1,hash+1+n);

pre();

sort(s+1,s+1+cnt,c***);

go();

printf("%d",ans+n);

return 0;

}

BZOJ1818 Cqoi2010 內部白點

給定平面上的一些黑點,其它位置都是白點,乙個白點如果上下左右都有黑點就會變成黑點,求最終會有多少個黑點 就是求交點個數 離散化後,取出所有線段,然後沿任意乙個軸朝著乙個方向掃,然後把平行於另乙個軸的線段用端點記錄,掃到一端就在樹狀陣列裡 1,另一端 1,樹狀陣列求個區間和貢獻答案即可 const m...

bzoj1818 Cqoi2010 內部白點

description 無限大正方形網格裡有n個黑色的頂點,所有其他頂點都是白色的 網格的頂點即座標為整數的點,又稱整點 每秒鐘,所有內部白點同時變黑,直到不存在內部白點為止。你的任務是統計最後網格中的黑點個數。內部白點的定義 乙個白色的整點p x,y 是內部白點當且僅當p在水平線的左邊和右邊各至少...

bzoj1818 Cqoi2010 內部白點

description 無限大正方形網格裡有n個黑色的頂點,所有其他頂點都是白色的 網格的頂點即座標為整數的點,又稱整點 每秒鐘,所有內部白點同時變黑,直到不存在內部白點為止。你的任務是統計最後網格中的黑點個數。內部白點的定義 乙個白色的整點p x,y 是內部白點當且僅當p在水平線的左邊和右邊各至少...