P1632 点的移动

题目描述

平面上有N个整数坐标点。如果将点(x0,y0)移动到(x1,y1),则需要的代价为|x0-x1|+|y0-y1|。求使得K(K=1,…,N)个点在同一位置上最少需要的代价。

输入输出格式

输入格式:

第一行一个正整数N;

接下来N行,每行两个正整数xi和yi,为第i个点的坐标,不超过10^6。

输出格式:

输出共N行,第i行为使得有i个点在统一位置的最少代价。

输入输出样例

输入样例#1:

4

15 14

15 16

14 15

16 15

输出样例#1:

0

2

3

4

【数据规模】

对于100%的数据中,满足1<=N<=50。


思路:


安利博客

题目传送门


先说一下我犯得一个严重错误。题目没读清。让输出移动k个点的,而不是n个。一定要

认真读题

啊。


这个题是暴力枚举,可是,为什么可以。

下面让我们想一下这个;

则需要的代价为|x0-x1|+|y0-y1|。求使得K(K=1,…,N)个点在同一位置上最少需要的代价。

最优的点的横纵坐标一定来源于已知点的横纵坐标

为什么这么说呢,联想两点之间线段最短,如果有两个点,把它们移动到一个点上,最优解是移动到他两个连线的线段上。

比方说下面的图

1是一个最优点,而根据曼哈顿距离的计算公式,我们可以发现,最优点2与最优点1是等效的。

我们考虑找到每两个点的最优点,这些点的最优点又会在最优点连城的线段上。

而这个点,又可以经过转化,转到一个横纵坐标已知的点上。

而且就算是多边形也没有关系啊。

最优点一定在网格区域内,网格区域的点又可以转化位已知的点的横纵坐标。

现在就证明了枚举横纵坐标的 正确性 了


下面还有有一个要注意的点。本人的最大值付为了0x7fffff;

然后

看看这个QAQ

\({\Huge\color{Salmon}{Make-sure-your-maximum-is-the-maximum}}\)

付成0x7fffffff就可以了。


\({\color{Green}{By}}\)

\({\color{Green}{enceladus}}\)

最后献上本人丑陋的代码,(代码有锅,勿抄,不要变棕啊)

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define INF 0x7fffffff
#define ll long long
#define IL inline
#define R register
using namespace std;
ll ans[57];
int x[57],y[57];
long long l[57];
ll tot=0;
int mx,my;
int n; int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x[i]>>y[i];
ans[i]=0x7fffffff;
}
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
for(int t=1;t<=n;t++)
{
l[t]=abs(x[t]-x[j])+abs(y[t]-y[k]);
}
tot=0;
sort(l+1,l+1+n);
for(int i=1;i<=n;i++)
{
tot+=l[i];
ans[i]=min(ans[i],tot);
}
}
}
for(int i=1;i<=n;i++)
{
cout<<ans[i]<<endl;
}
return 0;
}

题解 P1632 点的移动的更多相关文章

  1. 【洛谷P1632】点的移动

    P1632 点的移动 题目描述 平面上有N个整数坐标点.如果将点(x0,y0)移动到(x1,y1),则需要的代价为|x0-x1|+|y0-y1|.求使得K(K=1,-,N)个点在同一位置上最少需要的代 ...

  2. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  3. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  5. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  6. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  7. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  9. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

随机推荐

  1. Python基础学习四 函数

    1.内置函数 Python内置了很多有用的函数,是可以直接调用的. 参考链接:https://docs.python.org/3/library/functions.html 调用函数的时候,如果传入 ...

  2. Spring Cloud Config 1 (分布式配置中心)

    spring cloud config是spring cloud团队创建的一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端和客户端两部分. 服务端也被称为 ...

  3. $().each和$.each()

    $().each 在dom处理上面用的较多.如果页面有多个input标签类型为checkbox,对于这时用$().each来处理多个checkbook,例如: $(“input[name=’ch’]” ...

  4. 说说API的重放机制

    API的重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击.重放攻击是什么呢?就是把你的请求原封不动地再发送一次,两次...n次,一般正常的请求都会通过验证进入到正常逻辑中,如果这个正 ...

  5. 4-1 线程安全性-原子性-atomic-1

    我们发现在不做任何同步的情况下,我们计算的累加结果是错误的. com.mmall.concurrency.example.count.CountExample2 C:\Users\ZHONGZHENH ...

  6. 747. Largest Number At Least Twice of Others比所有数字都大两倍的最大数

    [抄题]: In a given integer array nums, there is always exactly one largest element. Find whether the l ...

  7. R 如何 隐藏坐标轴

    x = c(7,5,8)dim(x)<-3names(x)<-c("apple","banana", "cherry")plot ...

  8. Browser

    浏览器中关于事件的那点事儿 作者: 顽Shi  发布时间: 2014-02-01 20:22  阅读: 7830 次  推荐: 25   原文链接   [收藏]   摘要:事件在Web前端领域有很重要 ...

  9. mybatis 获得一个map的返回集合

    在使用mybatis 查询结果集,有时会有需求返回一个map比如表 id username 1  name1 2 name2 3 name3 希望的查询结果是一个map 并且以id为key  表为实体 ...

  10. iPhone的home键进果汁了,按起来粘粘的感觉

    解决办法是按住home键转动一下,再用棉签蘸点水或者酒精都行(注意:水不要太多,不能让水渗进去),用棉签按压home 键多转几圈就好了.