BZOJ[1696][Usaco2007 Feb]Building A New Barn新牛舍 贪心
2017-12-07 13:39
330 查看
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1696
分情况讨论:
①如果有奇数个牛,横纵坐标分别取中位数,如果该位置有牛就讨论上下左右(没有挨着的牛)
②如果有偶数个牛,设中位数分别为x1,x2,y1,y2,则在(x1~x2,y1~y2)中没牛的点都是合法的
代码如下:
分情况讨论:
①如果有奇数个牛,横纵坐标分别取中位数,如果该位置有牛就讨论上下左右(没有挨着的牛)
②如果有偶数个牛,设中位数分别为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 ; int x ,y ; 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新牛舍(贪心)
- 【BZOJ1696】[Usaco2007 Feb]Building A New Barn新牛舍【中位数】【绝对值不等式】【贪心】
- bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍
- BZOJ 1696 [Usaco2007 Feb]Building A New Barn新牛舍 数学
- Bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍 中位数,数学
- BZOJ 1696: [Usaco2007 Feb]Building A New Barn新牛舍
- BZOJ 1696 [Usaco2007 Feb]Building A New Barn新牛舍 数学
- bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍 ——中位数排序
- BZOJ1696: [Usaco2007 Feb]Building A New Barn新牛舍
- 1696: [Usaco2007 Feb]Building A New Barn新牛舍
- BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心
- 【BZOJ】1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典(dp)
- BZOJ_1626_[Usaco2007_Dec]_Building_Roads_修建道路_(Kruskal)
- BZOJ 1631: [Usaco2007 Feb]Cow Party
- BZOJ 1691 [Usaco2007 Dec]挑剔的美食家 贪心+treap
- BZOJ_1629_[Usaco2007_Demo]_Cow_Acrobats_(贪心)
- 【置换群】【bzoj 1697】: [Usaco2007 Feb]Cow Sorting牛排序
- [BZOJ 1692] [Usaco2007 Dec] 队列变换 【后缀数组 + 贪心】
- BZOJ1631: [Usaco2007 Feb]Cow Party 最短路 Spfa
- BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心