比赛 |
2024暑假C班集训9 |
评测结果 |
AAAATTW |
题目名称 |
矩形覆盖 |
最终得分 |
57 |
用户昵称 |
wdsjl |
运行时间 |
2.878 s |
代码语言 |
C++ |
内存使用 |
3.28 MiB |
提交时间 |
2024-07-09 11:42:52 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N = 70;
struct node{
int x;
int y;
}a[N];
struct sq{
int l_x;
int r_x;
int x_y;
int s_y;
}b[10];
int n,k,res,c[N],used[N];
int check(){
for(int i=1;i<=k;i++){
for(int j=i+1;j<=k;j++){
if((b[i].r_x-b[i].l_x)+(b[j].r_x-b[j].l_x)<=max(b[i].r_x,b[j].r_x)-min(b[i].l_x,b[j].l_x)&&(b[i].s_y-b[i].x_y)+(b[j].s_y-b[j].x_y)<=max(b[i].s_y,b[j].s_y)-min(b[i].x_y,b[j].x_y)){
return 1;
}
}
}
return 0;
}
void solve(){
for(int i=1;i<=k;i++){
b[i].l_x=501;
b[i].r_x=-1;
b[i].s_y=-1;
b[i].x_y=501;
}
for(int i=1;i<=n;i++){
// cout<<c[i]<<" ";
b[c[i]].l_x=min(a[i].x,b[c[i]].l_x);
b[c[i]].r_x=max(a[i].x,b[c[i]].r_x);
b[c[i]].s_y=max(a[i].y,b[c[i]].s_y);
b[c[i]].x_y=min(a[i].y,b[c[i]].x_y);
}
if(check()==1)return ;
// cout<<endl;
int tot=0;
for(int i=1;i<=k;i++){
// cout<<endl;
if(used[i])tot+=(b[i].r_x-b[i].l_x)*(b[i].s_y-b[i].x_y);
// cout<<"TTT"<<b[i].l_x<<" "<<b[i].r_x<<" "<<b[i].x_y<<" "<<b[i].s_y;
}
// cout<<"TTT"<<tot<<" rrrr"<<res<<endl;
res=min(res,tot);
}
void dfs(int idx){
if(idx>n){
solve();
return;
}
for(int i=1;i<=k;i++){
c[idx]=i;
used[i]++;
dfs(idx+1);
used[i]--;
c[idx]=0;
}
}
int main(){
freopen("jxfg.in","r",stdin);
freopen("jxfg.out","w",stdout);
res=100000;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i].x,&a[i].y);
}
dfs(1);
printf("%d\n",res);
return 0;
}