比赛 2024暑假C班集训9 评测结果 AAWATTA
题目名称 矩形覆盖 最终得分 57
用户昵称 flyfree 运行时间 2.295 s
代码语言 C++ 内存使用 3.28 MiB
提交时间 2024-07-09 11:33:57
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int l[10],r[10],h[10],d[10];
int x[100],y[100];
int n,k,ans=1e9,res,p;
void dfs(int i){
    if(i>n){
        res=0;
        for(int j=1;j<=k;j++){
//            cout<<l[j]<<" "<<r[j]<<" "<<d[j]<<" "<<h[j]<<endl;
            if(l[j]==1e9||d[j]==1e9)return;
//            for(int num=1;num<j;num++){
//                if((l[num]>l[j]&&l[num]<r[j])||(d[num]>d[j]&&d[num]<h[j])||(r[num]>l[j]&&r[num]<r[j])||(h[num]>d[j]&&h[num]<h[j])||(h[num]>h[j]&&d[num]<d[j]&&l[num]<l[j]&&r[num]>r[j])){
////                    p-=(min(r[num],r[j])-max(l[num],l[j]))*(min(h[j],h[num])-max(d[j],d[num]));
////            cout<<l[j]<<" "<<r[j]<<" "<<d[j]<<" "<<h[j]<<endl;
////            cout<<l[num]<<" "<<r[num]<<" "<<d[num]<<" "<<h[num]<<endl;
//                      return;
//                }
//            }
            res+=(r[j]-l[j])*(h[j]-d[j]);
//            cout<<"j:"<<j<<" "<<p<<endl; 
        }
//        cout<<res<<endl;
        ans=min(ans,res);
        return;
    }
    for(int j=1;j<=k;j++){
        int lz=l[j],rz=r[j],hz=h[j],dz=d[j];
        l[j]=min(x[i],l[j]),r[j]=max(r[j],x[i]);
        d[j]=min(d[j],y[i]),h[j]=max(h[j],y[i]);
//        cout<<i<<" "<<j<<endl;
//        for(int num=1;num<=k;num++)cout<<l[num]<<" "<<r[num]<<" "<<d[num]<<" "<<h[num]<<endl;
        dfs(i+1);
//        cout<<i<<" "<<j<<" "<<lz<<" "<<rz<<" "<<dz<<" "<<hz<<endl;
        l[j]=lz,r[j]=rz,d[j]=dz,h[j]=hz; 
    }
}
int main(){
    freopen("jxfg.in","r",stdin);
    freopen("jxfg.out","w",stdout);
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>x[i]>>y[i];
    }
    for(int i=1;i<=k;i++){
        d[i]=1e9,l[i]=1e9;
    }
    dfs(1);
    cout<<ans<<endl;
//    return cerr<<clock()<<"ms"<<endl,0;
    return 0;
}