IOI 2007 Flood

发布时间 2023-11-01 10:34:33作者: yl_neo

有一些墙壁链接(ax,ay), (bx,by)

每次若有墙壁的两边一个有水,一个为空,墙壁就破了然后水开始充了起来

找出最后还存在的墙壁

 

首先我们可以看出来墙壁的两边是可以用节点表示的

我们需要合并一些区间什么的, 听说这一题有些人利用对偶图来求但是我不会

可以自己想想怎么样合并/哪个区间要合并

 

Ok,现在我们要找联通性。并查集?看完答案才知道,其实01 bfs就可以

那么为了寻找最外面的一个节点, 我们可以找max y的节点然后就是dfs

然后呢唯一难点在于建图, 我其实蛮懵的。什么时候w=0, w=1需要好好想想

看到别人的做法是节点i表示墙壁的第一边, i+m为第二边

然后看dis[i]=dis[i+m] 他就存在

 

说实话我不太会这题是看了答案才知道的。 

感悟:

1.这个题目卡MLE, 需要用那种什么 for(int u=head[u]; u!=-1; u=next[u]) 什么的需要学习一下

2.我对于怪题还不太熟, 需要多练

3.我不太知道01 bfs 的用法, 需要多学学

4.建图也不太会 [哭死]

 

我本身也在学习所以也没什么大不了的, 加油!!!