相当于给你一些点,要你最多删除不超过k,使得能使用一个边长为整数的长方形,与XY轴平行,使长方形的面积最小。

上课时拿笔来画画,然后忽然思路就开了,要是比赛也这样就好了~~先按X,Y分别排序,由于K较小,而且,删除的时候肯定会删除最外围的点,所以,可以上下左右枚举删了哪些点,排序后的数组来模拟这个过程,最多4^K个选择,可以过。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#define LL long long
using namespace std; ///vector<int>f;
const int MAX=100050; struct Point{
double x,y;
int index;
}ptx[MAX],pty[MAX]; bool cmpx(Point a,Point b){
if(a.x<b.x) return true;
return false;
} bool cmpy(Point a,Point b){
if(a.y<b.y) return true;
return false;
}
bool vis[MAX]; int n,k;
LL ans; void dfs(int wl,int wr,int hl,int hr,int counts){
if(!counts){
while(vis[ptx[wl+1].index]) wl++;
while(vis[ptx[wr-1].index]) wr--;
while(vis[pty[hl+1].index]) hl++;
while(vis[pty[hr-1].index]) hr--;
LL x=(ptx[wr-1].x-ptx[wl+1].x==0)?1:(LL)(ptx[wr-1].x-ptx[wl+1].x+0.5);
LL y=(pty[hr-1].y-pty[hl+1].y==0)?1:(LL)(pty[hr-1].y-pty[hl+1].y+0.5);
ans=min(ans,x*y);
return ;
} for(int i=wl+1;;i++){
if(vis[ptx[i].index]) continue;
vis[ptx[i].index]=true;
dfs(i,wr,hl,hr,counts-1);
vis[ptx[i].index]=false;
break;
}
for(int i=wr-1;;i--){
if(vis[ptx[i].index]) continue;
vis[ptx[i].index]=true;
dfs(wl,i,hl,hr,counts-1);
vis[ptx[i].index]=false;
break;
}
for(int i=hl+1;;i++){
if(vis[pty[i].index]) continue;
vis[pty[i].index]=true;
dfs(wl,wr,i,hr,counts-1);
vis[pty[i].index]=false;
break;
}
for(int i=hr-1;;i--){
if(vis[pty[i].index]) continue;
vis[pty[i].index]=true;
dfs(wl,wr,hl,i,counts-1);
vis[pty[i].index]=false;
break;
} } int main(){
while(scanf("%d%d",&n,&k)!=EOF){
double x1,y1,x2,y2;
for(int i=0;i<n;i++){
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
ptx[i].x=(x1+x2)/2;ptx[i].y=(y1+y2)/2;
ptx[i].index=i;
pty[i]=ptx[i];
vis[i]=false;
}
sort(ptx,ptx+n,cmpx);
sort(pty,pty+n,cmpy);
ans=(1LL<<62);
if(k==n-1){
cout<<1<<endl;
continue;
}
dfs(-1,n,-1,n,k);
cout<<ans<<endl;
} }

  

CF #330 D2 E的更多相关文章

  1. CF#310 d2

    A:|c[1]-c[0]| B:A+-(oc)A[0]==0..n-1 C: #include <cstdio> int n,m,i,j,k,p; int ll,ca,cb,cc; int ...

  2. CF # 369 D2 D、E

    D,只要抓住每个点只有一个出度,那么图就能分成几个部分,而且可以发现,一个部分最多一个环. #include <iostream> #include <cstdio> #inc ...

  3. CF# 368 D2 D

    很容易想到可以它操作序列弄成有向图,果断深搜.但我开始竟然用了一种特醇的方法,每个书架做一次深搜,复杂度O(nq),跑到57个test就不动了.看看代码吧 #include <iostream& ...

  4. CF #330 C

    改了题目之后,就是没有奇数的测试了... 其实可以很轻易地发现,要距离近的一方只会删除两端的,而要求远的一方会删除中间的. 那么,很明显的,剩下的两点会相差x/2个节点,于是,只要计算i和i+x/2的 ...

  5. NSCharacter​Set 使用说明

    NSCharacter​Set 和 NSMutableCharacterSet  用面向对象的方式来表示一组Unicode字符,它经常与NSString及NSScanner组合起来使用,在不同的字符上 ...

  6. ssl

    在Java加密技术(八)中,我们模拟了一个基于RSA非对称加密网络的安全通信.现在我们深度了解一下现有的安全网络通信--SSL.     我们需要构建一个由CA机构签发的有效证书,这里我们使用上文中生 ...

  7. Visual Studio 2015的坑:中文字符串编译后成乱码

    (2015年8月5日更新:微软已经修复了Roslyn的这个bug,详见 https://github.com/dotnet/roslyn/pull/4303 ) 昨天,我们用VS2015编译了博客程序 ...

  8. LayaAir引擎——(九)

    var h = new Array(); var j = new Array(); var xbCursor = 0; function xbinit() { xbinitName(); xbRect ...

  9. MIM协议与Base64编码

    MIME Protocol 1. MIME的全称是"Multipurpose Internet Mail Extensions",中译为"多用途互联网邮件扩展" ...

随机推荐

  1. [Swift通天遁地]五、高级扩展-(9)颜色、设备、UserDefaults、URL等扩展方法

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. Akka源码分析-Cluster-ActorSystem

    前面几篇博客,我们依次介绍了local和remote的一些内容,其实再分析cluster就会简单很多,后面关于cluster的源码分析,能够省略的地方,就不再贴源码而是一句话带过了,如果有不理解的地方 ...

  3. BigInteger、BigDecimal类的使用详解

    我们都知道在java里边long算是存储长度比较大的了,但是如果有很大的数我们应该怎么处理呢,不用怕,java还为我们准备了一个BigInteger的类,那么这个类到底能存储多大的数呢,这个一时还真不 ...

  4. notepad + +使用步骤

    原文地址:https://blog.csdn.net/so_geili/article/details/79317001#一-安装notepad 一. 安装notepad + +   notepad+ ...

  5. leetCode----day02---- 买卖股票的最佳时机 II

    要求: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必 ...

  6. Centos7基本命令

    shell基本命令 linux命令行的组成结构 linux系统命令操作语法格式 命令 空格 参数 空格 文件路径或者需要处理的内容 rm   -rf   /tmp/* ls   -la   /home ...

  7. 配置Oracle数据库的开机自启动

    每当数据库服务器重启后,都要重新启动数据库的监听和实例,特别是在服务器断电重启.例行维护性的场景下.能否像Windows服务器一样,让实例和监听随着服务的启动而启动呢?答案当然是肯定的,我们可以利用O ...

  8. GitLab Runner and CICD

    # Linux x86-64 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaw ...

  9. 既可以输入也可以选择的input框

    datalist 是h5中既可以选择也可以输入的属性 具体代码如下 <input list="datalist"/><datalist id="data ...

  10. SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始. 数据指针:当前内存缓存区, ...