[luogu1034] 矩形覆盖 (暴力)
Description
给n(n<=50)个点(x,y),要求用k(1<=k<=4)个没有联系的矩形覆盖住求矩形最小面积
Solution
感觉不是很可做,结果看TJ后发现数据太水直接暴力233
Code
//By Menteur_Hxy
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define F(i,a,b) for(register int i=(a);i<=(b);i++)
using namespace std;
inline int read() {
int x=0,f=1; char c=getchar();
while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}
while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();
return x*f;
}
const int N=60,INF=0x3f3f3f3f;
int n,k,ans;
int col[N],l[5],r[5],u[5],d[5],da[5];
struct Poi{int x,y;}p[N];
inline int get(int x) {
int res=0;
F(i,1,k) l[i]=u[i]=INF,r[i]=d[i]=da[i]=0;
F(i,1,x) {
int c=col[i];
l[c]=min(l[c],p[i].y); u[c]=min(u[c],p[i].x);
r[c]=max(r[c],p[i].y); d[c]=max(d[c],p[i].x);
da[c]=(r[c]-l[c])*(d[c]-u[c]);
}
F(i,1,k) res+=da[i];
return res;
}
inline void dfs(int x) {
if(x==n+1) {
int res=get(n);
F(i,1,n) F(j,1,k) if(col[i]!=j)
if(l[j]<=p[i].y&&p[i].y<=r[j]&&
u[j]<=p[i].x&&p[i].x<=d[j]) return ;
ans=min(ans,res);
return ;
}
F(i,1,k) {
col[x]=i;
if(get(x)>ans) continue;
// printf("%d %d %d %d %d\n",x,l[i],r[i],u[i],d[i]);
dfs(x+1);
col[x]=0;
}
return ;
}
int main() {
n=read(),k=read();
F(i,1,n) p[i].x=read(),p[i].y=read();
ans=INF; dfs(1);
printf("%d",ans);
return 0;
}
[luogu1034] 矩形覆盖 (暴力)的更多相关文章
- [LuoguP1034][Noip2002] 矩形覆盖
[LuoguP1034][Noip2002] 矩形覆盖(Link) 在平面上有\(N\)个点,\(N\)不超过五十, 要求将这\(N\)个点用\(K\)个矩形覆盖,\(k\)不超过\(4\),要求最小 ...
- 【集训Day3 离散化】矩形覆盖
矩形覆盖(planting) [问题描述] 给定在一个平面坐标系上的N(1 <= N <= 100)个矩形区域,这N个矩形可能有相互覆盖的部分.求平面上被所有矩形覆盖的总面积,重复部分只算 ...
- luoguP1034 矩形覆盖 x
P1034 矩形覆盖 题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4( ...
- 【OpenJudge 1793】矩形覆盖
http://noi.openjudge.cn/ch0405/1793/ 好虐的一道题啊. 看数据范围,一眼状压,然后调了好长时间QwQ 很容易想到覆盖的点数作为状态,我用状态i表示至少覆盖状态i表示 ...
- NOIP2002矩形覆盖[几何DFS]
题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7),见图一. 这 ...
- bzoj 1185 旋转卡壳 最小矩形覆盖
题目大意 就是求一个最小矩形覆盖,逆时针输出其上面的点 这里可以看出,那个最小的矩形覆盖必然有一条边经过其中凸包上的两个点,另外三条边必然至少经过其中一个点,而这样的每一个点逆时针走一遍都满足单调性 ...
- [剑指OFFER] 斐波那契数列- 跳台阶 变态跳台阶 矩形覆盖
跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. class Solution { public: int jumpFloor(int number) ...
- NOIP2002 矩形覆盖
题四 矩形覆盖(存盘名NOIPG4) [问题描述]: 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2), ...
- UVA-11983-Weird Advertisement(线段树+扫描线)[求矩形覆盖K次以上的面积]
题意: 求矩形覆盖K次以上的面积 分析: k很小,可以开K颗线段树,用sum[rt][i]来保存覆盖i次的区间和,K次以上全算K次 // File Name: 11983.cpp // Author: ...
随机推荐
- bzoj1087【SCOI2005】互不侵犯King
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2405 Solved: 1413 [Submit ...
- Android自己定义组件系列【1】——自己定义View及ViewGroup
View类是ViewGroup的父类,ViewGroup具有View的全部特性.ViewGroup主要用来充当View的容器.将当中的View作为自己孩子,并对其进行管理.当然孩子也能够是ViewGr ...
- local_response_normalization 和 batch_normalization
Normalization Normalization local_response_normalization local_response_normalization出现在论文”ImageNe ...
- hdu 2063 (二分匹配 匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 树形dp初步
其实很早之前就学过树形dp,今天总接一下.树形dp就是一个在树上跑的dp(滑稽) 先是一道板子题:树上最大独立集 直接上代码了. #include<iostream> #include&l ...
- 判断文件是否为空 C++
#include <sys/stat.h> int stat(const char *restrict pathname, struct stat *restrict buf); stru ...
- PCB MongoDB数据库 备份与还原
一. MongoDB数据库 备份与还原工具介绍: 数据备份工具 mongodump.exe 数据还原工具 mongorestore.exe 二. MongoDB数据库备份 mongodump - ...
- E20170813-ts
explicitly adv. 明白地,明确地;
- Arbitrage(floyd)
http://poj.org/problem?id=2240 #include <stdio.h> #include <string.h> <<; ][]; ][] ...
- Win10,JDK8,tomact7.0.85配置
今天在win10上配置了jdk以及tomact先前使用jdk7+tomact7.0.56运行失败. 后经调整后正确配置注意事项如下: 1.下载并按照jdk-8u161-windows-x64,默认安装 ...