[Luogu] 矩形覆盖
https://www.luogu.org/problemnew/show/P1034
数据太水
爆搜过掉
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring> const int N = ; int n, K, Use[N], A[N], Answer = 1e7;
int Maxx, Minx, Maxy, Miny;
struct Node {int X, Y;} Point[N]; #define gc getchar() inline int read() {
int x = ; char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} void Out() {
int now_ans = ;
Maxx = Maxy = ;
Minx = Miny = 1e7;
for(int i = ; i <= K; i ++) {
for(int j = A[i - ] + ; j <= A[i]; j ++) {
Maxx = std:: max(Maxx, Point[j].X);
Maxy = std:: max(Maxy, Point[j].Y);
Minx = std:: min(Minx, Point[j].X);
Miny = std:: min(Miny, Point[j].Y);
}
now_ans += (Maxx - Minx) * (Maxy - Miny);
Maxx = Maxy = ;
Minx = Miny = 1e7;
}
if(now_ans < Answer) Answer = now_ans;
} bool Cmp1(Node a, Node b) {
if(a.X == b.X) return a.Y < b.Y;
return a.X < b.X;
}
bool Cmp2(Node a, Node b) {
if(a.Y == b.Y) return a.X < b.X;
return a.Y < b.Y;
} void Dfs(int tot) {
if(tot == K) {Out(); return ;}
for(int i = A[tot - ] + ; i <= n; i ++) {
if(!Use[i]) {
Use[i] = ;
A[tot] = i;
Dfs(tot + );
Use[i] = ;
}
}
} int main() {
n = read(), K = read();
for(int i = ; i <= n; i ++) Point[i].X = read(), Point[i].Y = read();
std:: sort(Point + , Point + n + , Cmp1);
A[K] = n;
Dfs();
std:: sort(Point + , Point + n + , Cmp2);
Dfs();
std:: cout << Answer;
return ;
}
[Luogu] 矩形覆盖的更多相关文章
- 【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: ...
- 【旋转卡壳+凸包】BZOJ1185:[HNOI2007]最小矩形覆盖
1185: [HNOI2007]最小矩形覆盖 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 1945 Solve ...
- BZOJ:1185: [HNOI2007]最小矩形覆盖
1185: [HNOI2007]最小矩形覆盖 这计算几何……果然很烦…… 发现自己不会旋转卡壳,补了下,然后发现求凸包也不会…… 凸包:找一个最左下的点,其他点按照与它连边的夹角排序,然后维护一个栈用 ...
- BZOJ 1185: [HNOI2007]最小矩形覆盖 [旋转卡壳]
1185: [HNOI2007]最小矩形覆盖 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 1435 Solve ...
随机推荐
- SAS学习笔记5 字符截取语句(index、compress、substr、scan函数)
index:返回一个字符串中,某个特定字符或字符串的位置,找不到时返回0 compress:从一个字符串移除特定的字符 substr函数 字符替换与提取字符 substr(s, p, n)从变量s的第 ...
- YAML 语言格式
1. 认识 YAML YAML(Yet Another Markup Language)语言(发音 /ˈjæməl/ )是一个类似 XML.JSON 的标记性语言.YAML 强调以数据为中心,并不是以 ...
- linux 用户切换组
问题: 因为默认的的网站路径 /var/www/html 是root 用户 root组的, 想要修改什么的需要用sudo 很麻烦. 解决: 将当前用户 hehecat加入至root组,使之有权限对目录 ...
- Script text 属性
参考 Script text 属性
- menustrip选项怎么设置竖向分割线
效果图: 解决方案: 选中一个项--[右键]--[插入]--[separator]
- XML文件解析之DOM解析
XML文件是一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.基本的解析方式包括DOM解析和SAX解析,具体来说包括DOM解析,SAX解析,DOM4J解 ...
- Manifold learning 流形学习
Machine Learning 虽然名字里带了 Learning 一个词,让人乍一看觉得和 Intelligence 相比不过是换了个说法而已,然而事实上这里的 Learning 的意义要朴素得多. ...
- 【Hibernate】入门
一.Hibernate框架的概述 1.1 什么是Hibernate 1.2 Hibernate优点 二.Hibernate的日志记录 三.Hibernate 入门程序 3.1 引入依赖(5.x版本) ...
- 查看mysql的bin-log日志
1.查看有哪些binlog show binary logs; show master logs; 2.如何查看log_bin中的内容 show binlog events; 查看第一个binlog的 ...
- orecle 查询数量 union合并 的排序问题
orecle 查询数量 union合并 之后按照从小到大排序了,这边需要不排序的 直接将union 改成union all 就解决了. 图就不传了,验证没问题