比赛 |
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;
}