首页 > 其他分享 >Field Reduction USACO - 641

Field Reduction USACO - 641

时间:2023-06-09 09:45:23浏览次数:32  
标签:min int max long 641 Field Reduction ans tmp4

题目链接:http://www.usaco.org/index.php?page=viewproblem2&cpid=641&lang=en

题意:有n (3<n<50000) 头牛 你需要给这n头牛建造围栏。坐标范围1-40,000。围栏的面积越小越好。你需要删除1头牛来减小围栏面积

思路:1. 因为只能删除1头牛来减少围栏面积,所以只能删除最靠边缘的牛,否则不会影响围栏的面积

   2. 所以可删除的牛范围就在x最大,y最大,x最小,y最小的4条边上

   3. 其次,如果那一条边上有2头牛,删除1头也没有用,所以直接考虑别的边

   4. 4条边全部枚举完后 算出最小面积

AC代码:

#include<bits/stdc++.h>
using namespace std;
long long n,maxx,minx,maxy,miny,cnt1,cnt2,cnt3,cnt4,tmp1,tmp2,tmp3,tmp4,c1;
long long ans=2e10;
int main(void) {
    freopen("reduce.in","r",stdin);
    freopen("reduce.out","w",stdout);
    struct cow {
        int x;
        int y;
    };
    cow a[55555];
    cin>>n;
    for(int i=0; i<n; i++) {
        cin>>a[i].x>>a[i].y;
    }
    //确定4条边
    for(int i=0; i<n; i++) {
        if(a[i].x>a[maxx].x) {
            maxx=i;
        }
        if(a[i].x<a[minx].x) {
            minx=i;
        }
        if(a[i].y>a[maxy].y) {
            maxy=i;
        }
        if(a[i].y<a[miny].y) {
            miny=i;
        }
    }
    ans=(a[maxx].x-a[minx].x)*(a[maxy].y-a[miny].y);
    //测试cout<<maxx<<endl<<minx<<endl<<maxy<<endl<<miny;
    //确定边上牛数量 必须=1 否则删了也没用
    for(int i=0; i<n; i++) {
        //左边
        if(a[minx].x==a[i].x) {
            cnt1++;
        }
        //右边
        if(a[maxx].x==a[i].x) {
            cnt2++;
        }
        //上边
        if(a[maxy].y==a[i].y) {
            cnt3++;
        }
        //下边
        if(a[miny].y==a[i].y) {
            cnt4++;
        }
    }
    //判断得出距离最近的牛的距离
    if(cnt1==1) {
        int max_x=0,max_y=0,min_x=100000,min_y=100000;
        for(int i=0; i<n; i++) {
            if(a[i].x>a[minx].x) {
                max_x=max(max_x,a[i].x);
                max_y=max(max_y,a[i].y);
                min_x=min(min_x,a[i].x);
                min_y=min(min_y,a[i].y);
            }
        }
        tmp1=(max_y-min_y)*(max_x-min_x);
        ans=min(ans,tmp1);
    }
    if(cnt2==1) {
        int max_x=0,max_y=0,min_x=100000,min_y=100000;
        for(int i=0; i<n; i++) {
            if(a[i].x<a[maxx].x) {
                max_x=max(max_x,a[i].x);
                max_y=max(max_y,a[i].y);
                min_x=min(min_x,a[i].x);
                min_y=min(min_y,a[i].y);
            }
        }
        tmp2=(max_y-min_y)*(max_x-min_x);
        ans=min(ans,tmp2);
    }
    if(cnt3==1) {
        int max_x=0,max_y=0,min_x=100000,min_y=100000;
        for(int i=0; i<n; i++) {
            if(a[i].y<a[maxy].y) {
                max_x=max(max_x,a[i].x);
                max_y=max(max_y,a[i].y);
                min_x=min(min_x,a[i].x);
                min_y=min(min_y,a[i].y);
            }
        }
        tmp3=(max_y-min_y)*(max_x-min_x);
        ans=min(ans,tmp3);
    }
    if(cnt4==1) {
        int max_x=0,max_y=0,min_x=100000,min_y=100000;
        for(int i=0; i<n; i++) {
            if(a[i].y>a[miny].y) {
                max_x=max(max_x,a[i].x);
                max_y=max(max_y,a[i].y);
                min_x=min(min_x,a[i].x);
                min_y=min(min_y,a[i].y);
            }
        }
        tmp4=(max_y-min_y)*(max_x-min_x);
        ans=min(ans,tmp4);
    }
    //求出最小面积
    cout<<ans<<endl;
    return 0;
}

 

求围栏最小面积

标签:min,int,max,long,641,Field,Reduction,ans,tmp4
From: https://www.cnblogs.com/cruz-fy/p/17468256.html

相关文章

  • OpenMP 归约和reduction子句
    简述归约归约操作在MPI里也学过,不过那时候还不太熟悉这种操作。当时只知道MPI_Reduce可以把全局求和和集合通信封装起来,非常方便。实际上将相同的二元归约操作符重复地应用到一个序列上得到结果的计算过程都可以称为归约。python里那个难理解的reduce()函数也就是归约:1......
  • django 自定义FileField upload_to上传路径
    defuser_directory_path(instance,name):"""clean_data内容:fork,vinclean_data:K:fileV:record1301DL00220230602全部.txtK:nameV:record1301DL00220230602全部.txt"""filename=name[15:2......
  • IOS学习-UITextField
    《iOS8开发指南》,自己总结用UITextField文本框(UITextField)是一种常见的信息输入机制,类似于Web表单中的表单字段。文本框基础常用属性(1)boderStyle属性:设置输入框的边框线样式(2)backgroundColor属性:设置输入框的背景颜色,使用其font属性设置字体。(3)clearButtonMode属性:设置......
  • lucene底层数据结构——FST,针对field使用列存储,delta encode压缩doc ids数组,LZ4压缩算
    参考:http://www.slideshare.net/lucenerevolution/what-is-inaluceneagrandfinalhttp://www.slideshare.net/jpountz/how-does-lucene-store-your-data摘录一些重要的:看一下Lucene的倒排索引是怎么构成的。我们来看一个实际的例子,假设有如下的数据: docid年龄性别118女220女318男 ......
  • How to Find Django ImageField URL
    Thissetupisworkingforme,maybeitwillhelpyou.ItisforlatestversionofDjango.ManyanswersinOSareforolderDjangoversions.URLS:fromdjango.conf.urls.staticimportstaticfromdjango.confimportsettingsurlpatterns=[#url]+static(s......
  • 直播小程序源码,flutter TextField 限制输入长度,限制输入数字文字
    直播小程序源码,flutterTextField限制输入长度,限制输入数字文字//限制长度inputFormatters:[LengthLimitingTextInputFormatter(11)], //限制输入数字文字等类型inputFormatters:[WhitelistingTextInputFormatter.digitsOnly], //键盘类型keyboardType:TextInputType.tex......
  • couldn't clear tomcat cache java.lang.NoSuchFieldException: resourceEntries
    2015-09-2500:17:11,435WARN[dqapp24http-nio-8002-exec-22]com.opensymphony.xwork2.util.LocalizedTextUtilcouldn'tcleartomcatcachejava.lang.NoSuchFieldException:resourceEntriesatjava.lang.Class.getDeclaredField(Class.java:2062)~[na:1.8......
  • bleve搜索引擎是支持基于field搜索的
    QueryStringQueryThequerylanguagequeryallowshumanstodescribecomplexqueriesusingasimplesyntax.TermsPlaintermswithoutanyothersyntaxareinterpretedasamatchqueryfortheterminthedefaultfield.Thedefaultfieldis _allunlessoverri......
  • 序列化Java对象重命名字段,@JSONField、@JsonProperty、@SerializedName
    @JSONField主要用于返回出参转换这个注解分别可以注解在实体类的属性、setter和getter方法上publicclassTest{/*注解在属性上的时候可以设置一些序列化、格式化的属性@JSONField(serialize=false)---->序列化的时候忽略这个属性@JSO......
  • resetFields失效与$nextTick
     这个问题会比较常见。我们经常会遇见这么写:update和add共用一个弹窗。update时,表单回显;add时,需要清空表单。  我们可能会用到Element-Ui表单的resetFields()方法,但是如果操作不当,这个resetFields()方法并不会生效。官网对这个方法的定义:resetFields: 对整个表单进行......