题意:



思路:

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

首先

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

这句话让我们省了很多的事儿 (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);
}
}

最新文章

  1. UNITY3D在线更新之道-CSlight 使用总结
  2. SPSS数据分析—单因素及多因素方差分析
  3. 斯坦福第五课:Octave 教程(Octave Tutorial)
  4. 最大公约数——Program G
  5. light oj 1138
  6. POI做题记录:第二届POI
  7. 执行SQL存储脚本
  8. Company Story | Vistaprint
  9. mongodb菜鸟整理
  10. spark-submit参数说明--standalone
  11. 5_Longest Palindromic Substring(Manacher) --LeetCode
  12. pythonmysql运行报错解决过程中遇到的其中一个报错解决文章来源
  13. L1-Day10
  14. Leetcode 第133场周赛解题报告
  15. python学习笔记 18-4-11
  16. mysql 免安装版 启动服务马上关闭
  17. [TensorBoard] Name &amp; Variable scope
  18. HIHOcoder1465 后缀自动机五&#183;重复旋律8
  19. JFinal Web开发学习(五)注册界面和后端验证
  20. java基础第10天

热门文章

  1. Oracle 性能优化的基本方法
  2. C# 遍历文件夹及子目录下所有图片.
  3. 20个非常有用的Java程序片段--转
  4. 格式化日期字符串 FormatSettings使用
  5. 利用jqueryzoom实现图片放大镜效果
  6. submile 安装,汉化,插件
  7. dp入门—数塔
  8. 新物理AI将可能成为量子计算革命的关键
  9. 转载:常用 Git 命令清单
  10. 8、Situation-Dependent Combination of Long-Term and Session-Based Preferences in Group Recommendations: An Experimental Analysis ----组推荐中基于长期和会话偏好的情景依赖组合