題目真坑。。。。。。。。明顯不可能會出現-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在水平線的左邊和右邊各至少...