题意:



思路:

这道题坑也不少。。 你准备好脑洞了么?

首先

要认真审题 题目中有说:“没有两头牛的吃草位置是相邻的”

这句话让我们省了很多的事儿 (Discuss里有的大神就入了这个坑了)

然后呢

自然想到了中位数 (不要问我怎么想到的)

但是如果n为偶数怎么办呢 就取两个中间位置的数那段区间呗~

本以为随便搞搞

n的取值 干啥
n为奇数 找到中间点
n为偶数 找到矩形区间

就像酱紫,就完了呢….

然而 我想简单了….

还有几步没有想到

1. 中间的那个点被牛占了怎么办

2. 矩形区间里面有牛怎么办

对于第一个问题

遍历它旁边的所有点(上下左右) 找到合适的点(可能是好几个)并统计

再重复一遍这句话“没有两头牛的吃草位置是相邻的”

对于第二个问题 判个重就OK了……

最后放一个毕克大爷的数据

(我跟他的结果一样 嘿嘿)

(不一样不就惨了嘛……)

//By SiriusRen
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,xx[]={1,-1,0,0},yy[]={0,0,1,-1};
struct Point{int x,y;}point[10005];
bool cmp1(Point a,Point b){return a.x<b.x;}
bool cmp2(Point a,Point b){return a.y<b.y;}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&point[i].x,&point[i].y);
if(n&1){
int ans=0,l,r;
sort(point+1,point+1+n,cmp1);
int ansx=point[n/2+1].x;
sort(point+1,point+1+n,cmp2);
int ansy=point[n/2+1].y;
for(l=n/2+1;l>=1;l--)
if(point[l].y!=point[l-1].y)break;
for(r=n/2+1;r<=n;r++)
if(point[r].y!=point[r+1].y)break;
for(int i=l;i<=r;i++){
if(i==r) {
for(int i=1;i<=n;i++){
ans+=fabs(point[i].x-ansx);
ans+=fabs(point[i].y-ansy);
}
printf("%d 1\n",ans);
return 0;
}
if(ansx==point[i].x)goto end;
}
end:int answer=0x3ffffff,temp;
for(int i=0;i<=3;i++){
ans=0;
int tempx=ansx+xx[i];
int tempy=ansy+yy[i];
for(int i=1;i<=n;i++){
ans+=fabs(point[i].x-tempx);
ans+=fabs(point[i].y-tempy);
}
if(answer>ans)answer=ans,temp=1;
else if(answer==ans)temp++;
}
printf("%d %d\n",answer,temp);
}
else{
sort(point+1,point+1+n,cmp1);
int ansx=point[n/2].x,ans=0,ansx2=point[n/2+1].x,recs=0;
sort(point+1,point+1+n,cmp2);
int ansy=point[n/2].y,ansy2=point[n/2+1].y;
for(int i=1;i<=n;i++)
ans+=fabs(point[i].x-ansx),ans+=fabs(point[i].y-ansy);
for(int i=1;i<=n;i++)
if(point[i].x>=ansx&&point[i].x<=ansx2&&point[i].y>=ansy&&point[i].y<=ansy2)
recs++;
printf("%d %d\n",ans,(ansx2-ansx+1)*(ansy2-ansy+1)-recs);
}
}

POJ 3269 中位数的更多相关文章

  1. poj 1723 中位数

    最近在看一些中位数的东西,然后顺便也看了些题目.poj 1723不仅要求到水平位置的最短距离和,还要求水平都相邻的排成一排的最短距离和,即士兵都站成一列. 到y轴的距离好办,按y轴坐标排序,求中位数, ...

  2. poj 2579 中位数问题 查找第K大的值

    题意:对列数X计算∣Xi – Xj∣组成新数列的中位数. 思路:双重二分搜索 对x排序 如果某数大于 mid+xi 说明在mid后面,这些数的个数小于 n/2 的话说明这个中位数 mid 太大 反之太 ...

  3. poj 3269 Building A New Barn

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  4. POJ 2388 Who's in the Middle(水~奇数个数排序求中位数)

    题目链接:http://poj.org/problem?id=2388 题目大意: 奇数个数排序求中位数 解题思路:看代码吧! AC Code: #include<stdio.h> #in ...

  5. POJ 1723 SOLDIERS (中位数)

    题目大意: 平面上有N(N<=10000)个点,求这些点变成一条水平线的最小移动步数. 算法讨论: 表示自己太弱弱了,打算从今天开始提高一下智商. 我们考虑,既然是要成一条水平线,那么这条直线的 ...

  6. poj 1723 SOLDIERS 带权中位数

    题目 http://poj.org/problem?id=1723 题解 带权中位数类型的题目~ 可以先考虑降维,最后集合的y坐标,明显是y坐标的中位数的位置,容易求出y方向的贡献res_y.比较麻烦 ...

  7. POJ 3784 Running Median(动态维护中位数)

    Description For this problem, you will write a program that reads in a sequence of 32-bit signed int ...

  8. POJ 3784 Running Median (动态中位数)

    题目链接:http://poj.org/problem?id=3784 题目大意:依次输入n个数,每当输入奇数个数的时候,求出当前序列的中位数(排好序的中位数). 此题可用各种方法求解. 排序二叉树方 ...

  9. POJ 3784 Running Median【维护动态中位数】

    Description For this problem, you will write a program that reads in a sequence of 32-bit signed int ...

随机推荐

  1. CXF2.7.7 java.lang.RuntimeException: Cannot create a secure XMLInputFactory

    cxf-2.7.7.jar neethi-3.0.2.jar stax2-api-3.1.1.jar woodstox-core-asl-4.2.0.jar wsdl4j-1.6.3.jar xmls ...

  2. SignalR——聊天室的实现

    秒懂——SignalR ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连 ...

  3. 维基百科 MediaWiki API 解析

    使用开放的 API 做一个自己的小项目,是一个很好的学习方法.但好像开放的 API 选择并不多.这里给大家多一个选择,简单介绍一下维基百科使用的 MediaWiki API. 简介 先简单介绍几个容易 ...

  4. python课程设计笔记(一)开发环境配置

    今天开始学python,一个月后交成果?还是希望自己不要浮躁,认真地去学,有所付出也不期望太大回报. 现在还是一脸懵逼的状态,看着教程一点点来吧= = 毕竟我是最棒的最发光的阳光彩虹小白马! 1. 去 ...

  5. 一个基于Angular+Ionic+Phonegap的混合APP实战

    这个项目做得比较早,当时是基于ionic1和angular1做的.做了四个tabs的app,首页模仿携程首页,第二页主要是phonegap调用手机核心功能,第三页模仿微信和qq聊天页,第四页模仿一般手 ...

  6. Ubuntu 16.04 Go环境搭建 Go环境+Sublime配置

    Ubuntu 16.04 Go环境搭建 Go环境+Sublime配置 1. 安装Go 下载地址https://golang.org/dl/ (需要翻下) 下载到类似go1.8.3.linux-amd6 ...

  7. SQL Server-聚焦使用索引和查询执行计划

    前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the ...

  8. HTTP+XML接口客户端 结合策略模式实现总结

    在项目中,我们经常会使用到http+xml的接口,而且不仅仅的是一个,可能会有多个http的接口需要实时的交互.但是http接口的发送消息的公共部分是一样的,只有每个接口的报文解析和返回报文是不同的, ...

  9. C++快速读取大文件

    debug的时候需要等很长时间读模型,查资料发现了两种快速读取大文件的方法. test 1:每次读一个字符串 test 2.3一次读取整个文件 {//test 1 string buf; clock_ ...

  10. 04《UML大战需求分析》之四

    在学习完顺序图之后,流程分析的三种图,我已经学习完了我,但是我还需要大量地锻炼,这样才可以更加熟练地掌握几种图的使用和方法.接下来,我学习了用例图,用来描述系统的行为. 虽然是一同学习的,但是对用例图 ...