内部白点

首先这道题目给我们的一个启示:如果感觉要经历多次重复过程,可以看看是不是只会经历一次就不会再经历了

这道题目就是只会产生一次变化,即一个白点变成黑点不可能是因为他上下左右有一个最开始是白点后来变成黑点导致的

我们来证明一下

首先对一个白点(x,y),他要变成黑点,一定要他的左右两边有黑点,对x这一行最开始的时候,最左边的点为(x1,y1),最右边的点为(x2,y2),那么可以知道在任意时刻(x1,y1)的左边和(x2,y2)的右边都不可能有白点的,所以(x,y)一定在两者中间

那么对于(x,y),他的上下也要有白点,假设它的变化是由于点(x,y3)导致的(不妨设y3y),而且这个点在最开始是白点后面变成黑点的,那么(x,y3)变成白点肯定是因为他上面也一定有一个黑点,这么递归下去,这个“上面的黑点”一定是最开始就是黑点,假设这个点为(x,y4),那么在第一次变化的时候,(x,y)这个点完全会因为(x,y4)变成黑点,在(x,y)下面的点同理,所以我们只用考虑一次即可,而且考虑这个点上下左右最边缘的点即可

然后就是利用扫描线统计

主要是介绍一下扫描线能干嘛,一般用扫描线求面积并,周长并,B 维正交范围,还有一种比较抽象的题型描述:有这么一类问题,在整个活动中,每个参与者都是在特定的时间点参与其中,又在某个特定的时间点退出活动,而我们要解决的问题通常与参与者的数量和参与者之间的关系有关(就是本题的思想)

上面就可以使用扫描线,如果无法识别,对一个平面直角坐标系的统计问题可以考虑扫描线能不能够解决

update 2024.5.17

这是这道题目由于只关心每一行每一列的最远的两个点,所以我们定下其中一维,比如考虑行定的时候,我们就只用统计对应区间的答案了,这里就不难想到扫描线了

posted @   最爱丁珰  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示