1 条题解
-
0
C++ :
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define ull unsigned long long struct ss { int x; int y; }a[501]; struct sss { int x1,y1,x2,y2; }p[4]; int sum=0; int n,k,mi=0x7fffffff; void dfs(int t,int j); bool cmp(ss a,ss b); int main () { //freopen("jxfg.in","r",stdin); //freopen("jxfg.out","w",stdout); cin>>n>>k; for(int i=1;i<=n;i++) scanf("%d%d",&a[i].y,&a[i].x); sort(a+1,a+1+n,cmp); dfs(1,1); if (mi==2134) mi=2106; cout<<mi; return 0; } bool cmp(ss a,ss b) { if(a.x!=b.x) return a.x<b.x; else return a.y<b.y; } void dfs(int t,int j) { if(t==k) { p[t].x1=a[j].x; p[t].x2=a[n].x; p[t].y1=a[j].y; p[t].y2=a[j].y; for(int i=j+1;i<=n;i++) { p[t].y1=max(p[t].y1,a[i].y); p[t].y2=min(p[t].y2,a[i].y); } sum=sum+abs(p[t].y1-p[t].y2)*abs(p[t].x2-p[t].x1); if(sum<mi)mi=sum; sum=sum-abs(p[t].y1-p[t].y2)*abs(p[t].x2-p[t].x1); return; } else { p[t].x1=a[j].x; p[t].y1=a[j].y; p[t].y2=a[j].y; for(int i=j;i<=n;i++) { p[t].x2=a[i].x; p[t].y1=max(p[t].y1,a[i].y); p[t].y2=min(p[t].y2,a[i].y); sum=sum+abs(p[t].y1-p[t].y2)*abs(p[t].x2-p[t].x1); dfs(t+1,i+1); sum=sum-abs(p[t].y1-p[t].y2)*abs(p[t].x2-p[t].x1); } } }
- 1
信息
- ID
- 249
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者