【C++心路历程33】【USACO 2016 February Contest, Bronze Problem 3.】 Load Balancing(加难)

【问题描述】

  FJ的n头牛都站在二维农场上的一些坐标点(x1,y2)…(xn,yn)上,其中xi和yi都是正奇数,大小不会超过1,000,000。FJ想以建造一条很长(实际上是无限长)的南北向的栅栏的方式来分割他的农场,这个栅栏表示的直线符合直线方程(或者说一次函数)x=a(a是一个偶数,请确保FJ不会将栅栏穿过任何一头牛)。FJ同时还想建造另一条很长(实际上也是无限长)的东西向的栅栏,这个栅栏表示的直线同样满足直线方程y=b,其中b是一个偶数。这两条栅栏相交于点(a,b),并且这两条栅栏一起将他的农场分成四块。
  FJ想选择a和b使得出现在这四块区域里的牛的个数是“平衡的”,即没有一块区域里有太多的牛。如果使得m是四块区域里牛的数量的最大值,那么FJ想让m最小。请帮助他决定m的最小值。

【输入格式】

  第一行的输入是一个整数n,下面n行每行包含一只牛的位置,即其的x和y坐标。

【输出格式】

  只有一行,即最小的m。

【输入样例】

7
7 3
5 5
7 13
3 1
11 7
5 3
9 1

【输出样例】

2
【分析】
原题数据实在太水 n^3算法乱搞搞就行了。

【数据范围】
30%的数据:1≤n≤300
50%的数据:1≤n≤1000
100%的数据:1≤n≤100000

30分算法:

void solve30()
{
    int aa=maxn;
    for(int i=1;i<=n;i++)
    {
        int xx=x[i]+1;
        for(int j=1;j<=n;j++)
        {
            int yy=y[j]+1;
            int ans1=0,ans2=0,ans3=0,ans4=0,ans;
            for(int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值