题目

贪心,可以用分类讨论的方法,可以得出如果\(n^2\)枚举则会过不了,而我们观察原题中的式子,有: \(∣x1−x2∣+∣y1−y2∣\)

发现式子中的绝对值很恶心,而考虑如果没有绝对值的话会有四种情况。

  1. \((x1-x2)+(y1-y2)=x1+y1-(x2+y2)\)
  2. \((x1-x2)-(y1-y2)=x1-y1-(x2-y2)\)
  3. \(-(x1-x2)+(y1-y2)=x2-y2-(x1-y1)\)
  4. \(-(x1-x2)-(y1-y2)=x2+y2-(x1+y1)\)

可以发现x2,y2与x1,y1之间是可以相互转化的,即(x1,y1)与(x2,y2)的组合如果枚举的话会枚举两次,因此其实简化一下,则可以发现只有1、2两种情况。

因此直接排序贪心,分类讨论求最大值即可。

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#define N 1010003
using namespace std;
struct asd {
int x, y, ans1, ans2;
}data[N];
bool cmp1(asd a, asd b) {return a.ans1 < b.ans1;}
bool cmp2(asd a, asd b) {return a.ans2 < b.ans2;}
int n, ans;
int main()
{
scanf("%d", &n);
for (register int i = 1; i <= n; i++)
scanf("%d%d", &data[i].x, &data[i].y), data[i].ans1 = data[i].x + data[i].y, data[i].ans2 = data[i].x - data[i].y;
sort(data + 1, data + 1 + n, cmp1);
ans = max(ans, data[n].ans1 - data[1].ans1);
sort(data + 1, data + 1 + n, cmp2);
ans = max(ans, data[n].ans2 - data[1].ans2);
printf("%d", ans);
return 0;
}

最新文章

  1. 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)
  2. NPOI操作EXCEL(三)——反射机制进行excel表格数据的解析
  3. Linux下如何不停止服务,清空nohup.out文件
  4. 数独挑战(codevs 2924)
  5. 转载:mysql ODBC 在64位下提示找不到odbc驱动问题
  6. 使用simhash以及海明距离判断内容相似程度
  7. HDU-1018(简单数学)
  8. 美国地质调研局USGS
  9. 带你一起Piu Piu Piu~
  10. Java经典23种设计模式之创造型模式(一)
  11. win7下从ruby源代码编译安装
  12. YYHS-挑战nbc
  13. BottomSheet底部动作条使用
  14. [福大软工] Z班 第12次成绩排行榜
  15. [洛谷P1638]逛画展
  16. 多个string数组组装成一个List&lt;Object&gt;
  17. p1010幂次方---(分治)
  18. OpenCV矩形检测
  19. 包含mysql 递归查询父节点 和子节点
  20. 转发一篇分析LinQ是什么?

热门文章

  1. 【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据
  2. 转 js一个简单实用的弹出层
  3. 【转载】JVM结构、GC工作机制详解
  4. django+celery+redis环境配置
  5. D1-JavaScript
  6. 原生JS-----一个剪刀石头布游戏
  7. keil5工程移植到IAR工程
  8. H3C 802.11n
  9. jeecg的开发api接口之旅(http)
  10. SQL 执行 底层原理(一)