Fire Air 華科校賽 網路賽

2022-05-02 11:21:10 字數 1522 閱讀 2036

題目

在100000 * 10000的空地上,有n個時間點,每個時間點會在(xi,yi)上種一棵樹。

定義綠色:被樹包圍的空地的個數。

問每個時間點之後綠色為多少。如圖:

思路

逆向求解,從(0,0)位置將圈外的全標記(給空地加一圈),在分別考慮當前的樹,是在圈內還是圈的外圍。

由於vis是全域性陣列,之後的bfs都非常快,每個點只遍歷過一次。

**實現

1 #include2 #include3 #include4

using

namespace

std;

56 typedef pairp;

7const

int maxn = 100000 + 10; //

點的最大個數

8const

int size = 2000 + 10; //

地圖大小

9const

int offset = 1000; //

偏置10

const

int dx = ;

11const

int dy = ;

12int

n,xi[maxn],yi[maxn],ans[maxn];

13bool

vis[size][size], maze[size][size];

1415

int bfs(int x, int

y)1633}

34}35return

ret;36}

3738

intmain()

3947

48 bfs(0, 0

);49

int res = 0;50

for (int i = 0; i < size; i++)

51for (int j = 0; j < size; j++)

52if (vis[i][j] == false) res++;

53 ans[n] =res;

5455

for (int i = n; i >= 4; i--) //

1~3棵以內不可能圍成空地

5666

if (cnt == 0) //

cnt == 0,表示該點在內部

6771

else res -= (bfs(u, v) - 1

);72 ans[i - 1] =res;73}

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

75 printf("

%d\n

", ans[i]);

76return0;

77 }

xdoj 2018校賽 網路賽

第一次參加校賽,相比於之前的網路賽,感覺這次難度還行,不算難也不算簡單。先簡單說說前面幾道題吧 a 水題,找規律 b 水題,最小公倍數 c 稍稍有點難度,先排序,仔細考慮即可 d 水題,找規律 e bfs打表 f 矩陣快速冪遞推 g 找到一一對應的方法bfs 好了,仔細說說最後三題吧。h 一道看上去...

sdut 3914 校賽 校賽

time limit 1000ms memory limit 65536kb problem description sdut 的校賽是從 2009 年開始的,康納每年看到比賽之後,往往就會喊一聲 ma ji ya ba ku nai 年份的縮寫 比如說 2009 年就會說 ma ji ya ba ...

SDUT 3914 校賽 校賽

time limit 1000ms memory limit 65536kb problem description sdut 的校賽是從 2009 年開始的,康納每年看到比賽之後,往往就會喊一聲 ma ji ya ba ku nai 年份的縮寫 比如說 2009 年就會說 ma ji ya ba ...