BZOJ 1696: [Usaco2007 Feb]Building A New Barn新牛舍
2016-11-01 11:38
573 查看
把x和y分开并不影响结果。。
分别排序找中位数,找到的x,y就是点的坐标
如果这个点刚好有牛就判断这个点周围4个点
中位数有俩,那末在x∈[x1,x2],y∈[y1,y2]范围里的点都是可行的,然后去掉这之间有牛的点。
分别排序找中位数,找到的x,y就是点的坐标
如果这个点刚好有牛就判断这个点周围4个点
中位数有俩,那末在x∈[x1,x2],y∈[y1,y2]范围里的点都是可行的,然后去掉这之间有牛的点。
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define ll long long #define g getchar() #define inf 0x3f3f3f3f using namespace std; inline ll read(){ ll x=0,f=1;char ch=g; for(;ch<'0'||ch>'9';ch=g)if(ch=='-')f=-1; for(;ch>='0'&&ch<='9';ch=g)x=x*10+ch-'0'; return x*f; } inline void out(ll x){ int a[25],t=0; if(x<0)putchar('-'),x=-x; for(;x;x/=10)a[++t]=x%10; for(int i=t;i;--i)putchar('0'+a[i]); if(t==0)putchar('0'); putchar('\n'); } int n,ans,an[5],c; int fx[5]={0,1,-1,0,0},fy[5]={0,0,0,1,-1}; struct re{int x,y;}a[10005]; inline bool cmpx(re x,re y){return x.x==y.x?x.y<y.y:x.x<y.x;} inline bool cmpy(re x,re y){return x.y==y.y?x.x<y.x:x.y<y.y;} bool check(int x,int y){ for(int i=1;i<=n;++i)if(a[i].x==x&&a[i].y==y)return 0; return 1; } int main(){ n=read(); for(int i=1;i<=n;++i){ a[i].x=read(),a[i].y=read(); } if(n&1){ sort(a+1,a+1+n,cmpx);int x=a[(n>>1)+1].x; sort(a+1,a+1+n,cmpy);int y=a[(n>>1)+1].y; if(check(x,y)){ for(int i=1;i<=n;++i)ans+=abs(x-a[i].x)+abs(y-a[i].y); printf("%d %d\n",ans,1); return 0; } else{ for(int i=1;i<=n;++i) for(int j=1;j<=4;++j)an[j]+=abs(x+fx[j]-a[i].x)+abs(y+fy[j]-a[i].y); ans=inf; for(int i=1;i<=4;++i)if(an[i]<ans)ans=an[i],c=1;else if(an[i]==ans)++c; printf("%d %d\n",ans,c); return 0; } } else{ sort(a+1,a+1+n,cmpx);int x1=a[n>>1].x,x2=a[(n>>1)+1].x; sort(a+1,a+1+n,cmpy);int y1=a[n>>1].y,y2=a[(n>>1)+1].y; c=(x2-x1+1)*(y2-y1+1); for(int i=1;i<=n;++i){ if(a[i].x>=x1&&a[i].x<=x2&&a[i].y>=y1&&a[i].y<=y2)--c; ans+=abs(x1-a[i].x)+abs(y1-a[i].y); } printf("%d %d\n",ans,c);return 0; } 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新牛舍 中位数,数学
- 【BZOJ1696】[Usaco2007 Feb]Building A New Barn新牛舍【中位数】【绝对值不等式】【贪心】
- BZOJ 1696 [Usaco2007 Feb]Building A New Barn新牛舍 数学
- 1696: [Usaco2007 Feb]Building A New Barn新牛舍
- bzoj1633 [Usaco2007 Feb]The Cow Lexicon 牛的词典
- BZOJ 1631: [Usaco2007 Feb]Cow Party( 最短路 )
- [BZOJ1632][Usaco2007 Feb]Lilypad Pond(spfa)
- bzoj1633 [Usaco2007 Feb]The Cow Lexicon 牛的词典
- BZOJ1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘
- bzoj 1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘 spfa+bfs
- BZOJ 1631: [Usaco2007 Feb]Cow Party
- 【BZOJ1633】[Usaco2007 Feb]The Cow Lexicon 牛的词典【DP】
- 【BZOJ 1631】 [Usaco2007 Feb]Cow Party
- BZOJ 1697: [Usaco2007 Feb]Cow Sorting牛排序