BZOJ[1696][Usaco2007 Feb]Building A New Barn新牛舍 贪心
题目链接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新牛舍 贪心相关推荐
- 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 ...
- BZOJ 1696 [Usaco2007 Feb]Building A New Barn新牛舍 数学
题意:链接 方法:数学+模拟 解析: 首先这类问题不是第一次见了,所以直接知道拿x的中位数,y的中位数. 这题就是讨论情况非常的烦. 题中有个限制,给出待求和的点不能选取. 所以如果奇数个点,求出x中 ...
- 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 ...
- BZOJ 1631: [Usaco2007 Feb]Cow Party【最短路】
1631: [Usaco2007 Feb]Cow Party [题目描述] 传送门 题解 正向建边,从X开始刷一趟SPFA,然后反向建边,从X刷一趟SPFA,最后两次的答案加和就可以了. 代码如下 # ...
- bzoj 1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘(BFS)
1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 550 Solved: 1 ...
- 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 ...
- bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换)
1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 706 Solved: 413 ...
- 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 ...
- bzoj 1626: [Usaco2007 Dec]Building Roads 修建道路(最小生成树)
1626: [Usaco2007 Dec]Building Roads 修建道路 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1709 Solved ...
最新文章
- SQLserver 2000 重新安装挂起的解决方法
- 汇编语言--iret指令
- TFS中的迭代(五)
- 实时监听输入框值变化的完美方案:oninput onpropertychange
- ga 工具箱 matlab,初识遗传算法之MatlabGA工具箱
- [转] python提取计算结果的最大最小值及其坐标
- 26.逻辑卷管理器(Logical Volume Manager)
- FreeBSD--网络配置
- VC 界面库 皮肤库
- 企业微信机器人python脚本执行报错-‘errcode‘: 40008, ‘errmsg‘: ‘Warning: wrong json format. invalid message type
- 广西行政村数据shp_全国 shp 矢量数据汇总(四):全国行政区划基础矢量数据(精确到乡镇级别)...
- 总结三种方法使用Service实现在后台播放音乐、暂停音乐、停止音乐的功能
- Excel中如何快速输入☑和☒
- 论文阅读中经常出现的“消融研究/实验”
- SSH框架整合3——原生态SessionFactory
- OC10_代理反向传值
- css渲染图片时放大或缩小图片变模糊处理方式
- 渗透测试常用术语总结
- 汽车常见几种变速箱解析
- 在微信小程序里引入Vant Weapp组件库详细步骤