这个题是我第二次遇见的曼哈顿距离题目(但这道题要容易一些,因为我上回写的是K维的曼哈顿);
回忆一下什么是曼哈顿距离:
对于二维曼哈顿距离几何定义:

然后可以把d(1,2)分情况变形:
1.x1-x2>=0&&y1-y2>=0可得:d(1,2)=x1-x2+y1-y2;
2.x1-x2>=0&&y1-y2<0可得:d(1,2)=x1-x2+y2-y1;
3.x1-x2<0&&y1-y2>=0可得:d(1,2)=x2-x1+y1-y2;
4.x1-x2<0&&y1-y2<0可得:d(1,2)=x2-x1+y2-y1;
然后我可以把一对点的x和y合并变形可得:

然后问题就是如何求值了:这个可以很明显发现(x1,y1)的系数和(x2,y2)的系数相对应(也就是每个状态对应相等);
然后我就可以令系数-1为1,系数1为0,然后就可以利用枚举二进制了(其实这里可以根据自己想的来令,因为二进制只有0,1);意思就是这个意思:

所以看了看,明显枚举没问题;
所以枚举二进制状态即可(求最大曼哈顿距离);
AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=5e4+10;
int a[maxn][2],n;
int main(){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d %d",&a[i][0],&a[i][1]);//利用一个二维数组存坐标,当然也可以用结构体或者pair}int ans1=0,ans2=0,Max=0;int f1,f2;//记录系数for(int i=0;i<n;i++){//,枚举for(int j=i+1;j<n;j++){int sum =0;for(int k=0;k<=3;k++){//枚举状态 一共就00 01 10 11四种状态for(int u=0;u<=1;u++){//位移1来用&来判断对应的状态if(u==0){//右边第一个if(k&(1<<u)){///这就是上面分析时候说的1&1时,系数就为-1;反之为1;这个系数是从右往左枚举的哈,这样就可以理解了f2=-1;}else{f2=1;}}else{//右边第二个if(k&(1<<u)){f1=-1;}else{f1=1;}}}sum+=(f1*a[i][0]+f2*a[i][1]-(f1*a[j][0]+f2*a[j][1]));if(sum>Max){//存最大值Max=sum;ans1=i+1;ans2=j+1;//记录下标}sum=0; //每次更新值,因为每次状态都会变值}}}printf("%d %d\n",ans1,ans2);return 0;
}

Lonesome Partners(最大曼哈顿距离)相关推荐

  1. 曼哈顿距离和切比雪夫距离链接

    存一下链接慢慢看 曼哈顿距离和切比雪夫距离 这个更清晰一些: 关于曼哈顿距离和切比雪夫距离 NN中常用的距离计算公式:欧式距离.曼哈顿距离.马氏距离.余弦.汉明距离

  2. R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离、dist函数计算矩阵中两两元素的曼哈顿距离

    R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离.dist函数计算矩阵中两两元素的曼哈顿距离 目录 R语言计算曼哈顿距离(Manhattan Distance ...

  3. R语言dist函数距离计算实战(欧几里得距离、曼哈顿距离)

    R语言dist函数距离计算实战(欧几里得距离.曼哈顿距离) 目录 R语言dist函数距离计算实战(欧几里得距离.曼哈顿距离)

  4. 2个点马氏距离计算实例_数据分析基础:距离度量方式(欧式距离、马氏距离、曼哈顿距离)...

    数据分析中,为了评定数据之间的相似度,有很多不同的距离的计算方法,如欧氏距离,马氏距离等等. 欧氏距离 Euclidean distance:欧几里得距离,m维空间中两个点之间的真实距离 离差平方和, ...

  5. 曼哈顿距离,欧式距离,明式距离,切比雪夫距离,汉明距离

    根据我浅薄的知识,以及粗浅的语言,随意总结一下. 1.马氏距离(Manhattan distance),还见到过更加形象的,叫出租车距离的.具体贴一张图,应该就能明白. 上图摘自维基百科,红蓝黄皆为曼 ...

  6. 曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|.

    曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|. 我们可以定义曼哈顿距离的正式意义为L1-距离或城市区块距离,也就是在欧几里德空间的固定直角坐标系上两点所形成的线段对轴产生 ...

  7. 用曼哈顿距离来巧解---输出菱形的问题

    今天才发现输出菱形有一个特别巧妙的方法.就是用曼哈顿距离. 详细资料可以看这里:曼哈顿距离 那么如何用曼哈顿距离来输出菱形的呢? 我们来分析一下. 你会发现输出 " * " 号的位 ...

  8. 曼哈顿距离java实现_基于javascript实现获取最短路径算法代码实例

    这篇文章主要介绍了基于javascript实现获取最短路径算法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 //A算法 自动寻路 ...

  9. 打印菱形(曼哈顿距离法)

    曼哈顿距离: 我们由定义会发现,距离一个点的曼哈顿距离总是在围绕这个点的一个菱形边上,所以我们就有 默认矩阵行列数是奇数 ceter = int(input()) //中心点的坐标for i in r ...

最新文章

  1. Swift学习笔记-协议(Protocols)
  2. c语言代码,输入两个数,输出第一个数到第二个数之间所有的数
  3. HTTP状态码和支持的方法
  4. 利用ESP32驱动控制步进电机驱动器:MS2806
  5. 编辑从字节码和 JVM 的角度解析 Java 核心类 String 的不可变特性
  6. python树莓派串口通信实例_Python实现树莓派USB串口通讯及云端对接
  7. PyQt5中使用代码实现嵌套布局
  8. Spring Boot笔记-发送纯字符串邮件及带附件邮件
  9. Android用户界面
  10. ubuntu12.10安装android编译环境
  11. 股票历史数据-股票历史交易数据下载成Excel,股票历史交易数据查询
  12. Ext.Net配色方案
  13. Python写个小游戏:看图猜成语(下)
  14. python爬公众号图片,Python爬虫实例:爬取微信公众号图片(表情包)
  15. delphi技巧总结收集
  16. 《金牌网管师——助理级网吧网管》目录
  17. 学计算机好还是学数学好,大学专业学计算机好还是学数学好
  18. 【ORACLE】RAC 磁盘超时,导致数据库重启 WARNING: Waited 15 secs for write IO to PST disk 0 in group 1.
  19. 计算机一级期末考试题,2016年计算机一级考试题库(含答案)
  20. 红米AX6S路由器刷OpenWrt固件,实现软路由功能,科学-上网-网速度起飞

热门文章

  1. 有铅喷锡和无铅喷锡的选择
  2. 多层外延工艺超结MOS在电源中的应用
  3. App推广效果如何最大化提升?
  4. 造轮子计划之linux下通过matlab读写mat文件
  5. K-means均值聚类算法寻找质心,Python
  6. linux的shell脚本报错“syntax error near unexpected token `”的解决
  7. Java统计文档中aeiou的个数
  8. jdk1.8新特性 Lambda表达式和Stream集合操作(详细)
  9. 【GCC】1: RTCP RR接收端生成
  10. .rc 和.rc2文件