info: { blogIcon: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogUser: 'OIerBoy', blogAvatar: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogStartDate: '2023-04-22', webpageTitleOnblur: '(o?v?)ノ Hi', webpageTitleOnblurTimeOut: 1000, webpageTitleFocus: '(*′?`*) 欢迎回来!', webpageTitleFocusTimeOut: 1000, webpageIcon: "https://cdn.jsdelivr.net/gh/BNDong/Cnblogs-Theme-SimpleMemory@master/img/webp/blog_logo.webp", { enable: true, // 是否开启日/夜间模式切换按钮 auto: { // 自动切换相关配置 enable: false, // 开启自动切换 dayHour: 5, // 日间模式开始时间,整数型,24小时制 nightHour: 19 // 夜间模式开始时间,整数型,24小时制 } } },

P1648 看守

2023-09-21

题目

P1648 看守

难度&重要性(1~10):8.5

题目来源

luogu

题目算法

状压 dp,数学

解题思路

这道题我们首先要考虑如何去优化曼哈顿距离。(不然它怎么不玩欧式距离)
首先这是一个普通的曼哈顿距离:i=1d|AiBi|
敲重点了,我们可以将 |AiBi| 化为 max{AiBi,BiAi}
i=1dmax{AiBi,BiAi}
这样做有什么好处呢?
因为 max 是满足分配律的:
max{a,b}+max{c,d}=max{a+b,a+c,b+c,b+d}
这样曼哈顿距离就表示为:maxk{1,1}{i=1dk×Aii=1dk×Bi}
这样我们就只需要得到 maxi=1,k{1,1}n{j=1dk×ai,j}mini=1,k{1,1}n{j=1dk×ai,j}
只需要一减就是答案了。

完成状态

已完成

posted @   OIerBoy  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示