题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1696

分情况讨论:
①如果有奇数个牛,横纵坐标分别取中位数,如果该位置有牛就讨论上下左右(没有挨着的牛)
②如果有偶数个牛,设中位数分别为x1,x2,y1,y2,则在(x1~x2,y1~y2)中没牛的点都是合法的

代码如下:

#include<algorithm>
#include<ctype.h>
#include<cstdio>
#define INF 2147483647
#define N 10020
using namespace std;
inline int read(){int x=0,f=1;char c;do c=getchar(),f=c=='-'?-1:f; while(!isdigit(c));do x=(x<<3)+(x<<1)+c-'0',c=getchar(); while(isdigit(c));return x*f;
}
struct Data{int x,y;
}a[N];
int x[N],y[N];
int fx[5]={0,0,1,0,-1};
int fy[5]={0,1,0,-1,0};
int n,xx,yy,x1,y1,cnt,t;
bool flag;
int calc(int x,int y){int tmp=0;for(int i=1;i<=n;i++){tmp+=abs(a[i].x-x)+abs(a[i].y-y);}return tmp;
}
int main(){n=read();for(int i=1;i<=n;i++){a[i].x=x[i]=read();a[i].y=y[i]=read();}sort(x+1,x+n+1);sort(y+1,y+n+1);if(n&1){xx=x[n+1>>1];yy=y[n+1>>1];flag=false;for(int i=1;i<=n;i++)if(a[i].x==xx && a[i].y==yy){flag=true;break;}if(!flag) printf("%d 1",calc(xx,yy));else{int tmp=INF;for(int i=1;i<=4;i++){t=calc(xx+fx[i],yy+fy[i]);if(t==tmp) cnt++;if(t<tmp){tmp=t;cnt=1;}}printf("%d %d",tmp,cnt);}}else{xx=x[n>>1];yy=y[n>>1];x1=x[(n>>1)+1];y1=y[(n>>1)+1];cnt=(y1-yy+1)*(x1-xx+1);///这一片区域一共有多少个点for(int i=1;i<=n;i++)if(a[i].x >=xx && a[i].x<=x1 && a[i].y>=yy && a[i].y<=y1) cnt--;///减去有牛的点printf("%d %d",calc(xx,yy),cnt);}
return 0;
}

BZOJ[1696][Usaco2007 Feb]Building A New Barn新牛舍 贪心相关推荐

  1. bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍

    1696: [Usaco2007 Feb]Building A New Barn新牛舍 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 481  Solv ...

  2. BZOJ 1696 [Usaco2007 Feb]Building A New Barn新牛舍 数学

    题意:链接 方法:数学+模拟 解析: 首先这类问题不是第一次见了,所以直接知道拿x的中位数,y的中位数. 这题就是讨论情况非常的烦. 题中有个限制,给出待求和的点不能选取. 所以如果奇数个点,求出x中 ...

  3. 1696: [Usaco2007 Feb]Building A New Barn新牛舍

    1696: [Usaco2007 Feb]Building A New Barn新牛舍 Time Limit: 5 Sec   Memory Limit: 64 MB Submit: 378   So ...

  4. BZOJ 1631: [Usaco2007 Feb]Cow Party【最短路】

    1631: [Usaco2007 Feb]Cow Party [题目描述] 传送门 题解 正向建边,从X开始刷一趟SPFA,然后反向建边,从X刷一趟SPFA,最后两次的答案加和就可以了. 代码如下 # ...

  5. bzoj 1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘(BFS)

    1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 550  Solved: 1 ...

  6. bzoj 1632: [Usaco2007 Feb]Lilypad Pond(BFS)

    1632: [Usaco2007 Feb]Lilypad Pond Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 688  Solved: 230 [S ...

  7. bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换)

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 706  Solved: 413 ...

  8. poj 3268 bzoj 1631: [Usaco2007 Feb]Cow Party(最短路)

    1631: [Usaco2007 Feb]Cow Party Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 855  Solved: 613 [Subm ...

  9. bzoj 1626: [Usaco2007 Dec]Building Roads 修建道路(最小生成树)

    1626: [Usaco2007 Dec]Building Roads 修建道路 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1709  Solved ...

最新文章

  1. SQLserver 2000 重新安装挂起的解决方法
  2. 汇编语言--iret指令
  3. TFS中的迭代(五)
  4. 实时监听输入框值变化的完美方案:oninput onpropertychange
  5. ga 工具箱 matlab,初识遗传算法之MatlabGA工具箱
  6. [转] python提取计算结果的最大最小值及其坐标
  7. 26.逻辑卷管理器(Logical Volume Manager)
  8. FreeBSD--网络配置
  9. VC 界面库 皮肤库
  10. 企业微信机器人python脚本执行报错-‘errcode‘: 40008, ‘errmsg‘: ‘Warning: wrong json format. invalid message type
  11. 广西行政村数据shp_全国 shp 矢量数据汇总(四):全国行政区划基础矢量数据(精确到乡镇级别)...
  12. 总结三种方法使用Service实现在后台播放音乐、暂停音乐、停止音乐的功能
  13. Excel中如何快速输入☑和☒
  14. 论文阅读中经常出现的“消融研究/实验”
  15. SSH框架整合3——原生态SessionFactory
  16. OC10_代理反向传值
  17. css渲染图片时放大或缩小图片变模糊处理方式
  18. 渗透测试常用术语总结
  19. 汽车常见几种变速箱解析
  20. 在微信小程序里引入Vant Weapp组件库详细步骤

热门文章

  1. Linux下实现硬盘挂载
  2. 《中国新歌声》第二季再掀暑期音乐热浪 爱奇艺7月14日全网独播
  3. iframe加载完成事件
  4. 南瓜芽童装加盟让童装消费也疯狂
  5. java 单例模式 ---饿汉式懒汉式
  6. Spring Boot Validation提示信息国际化配置
  7. Cisco-ENSA-网络安全考试测试题
  8. 什么才是unsigned ?
  9. 零售终端检查的重要性
  10. 计算机的幼儿教育,浅析计算机与幼儿教育的关系