POJ 2227 The Wedding Juicer 算法合法性的证明(无代码)

文章讲述了使用边界向内收缩的算法思想解决水量计算问题,通过最小堆维护边界信息,利用BFS进行递推,并通过证明确保每次增加的水量正确。最终目标是找到边界内最大水量点的水量。
摘要由CSDN通过智能技术生成

算法思想:由边界向内收缩,所有值在最小堆中维护。设最大的边界为D0,其最小值点为(x0,y0,L0),搜索L0向边界内的点(dx,dy,dL),同时将(x0,y0,L0)出队。

若dL >= L0,则将(dx,dy,dL)点入队。否则,答案+=L0 - dL,并将(dx,dy,L0)入队。这是一个递推的bfs过程,直到遍历所有点时算法结束。

证明:只要证明每次加上的值  (Ln - dL) 是这个点能盛的水量即可。

(1) 如果由P的周围的点围成的边界出发,使这个边界不断拓展直到最大,计边界的最小值为Ln.。则所求Lk = MAX(L1,L2......Ln),这个点能盛的水量为(Lk - dL)。

只要证明Ln = Lk即可

(2)反证法:在(1)中边界不断扩张直到Dn的过程中,假设存在某个边界最小值Li > Ln。

但由于所求点在Dn的最小值点附近,有Li = min(D,Ln)  ,D表示新的边界中除了Ln以外的点        

即Ln >= Li,假设不成立,即Ln = Lk。

证明完成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值