CF #330 D2 E
相当于给你一些点,要你最多删除不超过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的更多相关文章
- 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 ...
- CF # 369 D2 D、E
D,只要抓住每个点只有一个出度,那么图就能分成几个部分,而且可以发现,一个部分最多一个环. #include <iostream> #include <cstdio> #inc ...
- CF# 368 D2 D
很容易想到可以它操作序列弄成有向图,果断深搜.但我开始竟然用了一种特醇的方法,每个书架做一次深搜,复杂度O(nq),跑到57个test就不动了.看看代码吧 #include <iostream& ...
- CF #330 C
改了题目之后,就是没有奇数的测试了... 其实可以很轻易地发现,要距离近的一方只会删除两端的,而要求远的一方会删除中间的. 那么,很明显的,剩下的两点会相差x/2个节点,于是,只要计算i和i+x/2的 ...
- NSCharacterSet 使用说明
NSCharacterSet 和 NSMutableCharacterSet 用面向对象的方式来表示一组Unicode字符,它经常与NSString及NSScanner组合起来使用,在不同的字符上 ...
- ssl
在Java加密技术(八)中,我们模拟了一个基于RSA非对称加密网络的安全通信.现在我们深度了解一下现有的安全网络通信--SSL. 我们需要构建一个由CA机构签发的有效证书,这里我们使用上文中生 ...
- Visual Studio 2015的坑:中文字符串编译后成乱码
(2015年8月5日更新:微软已经修复了Roslyn的这个bug,详见 https://github.com/dotnet/roslyn/pull/4303 ) 昨天,我们用VS2015编译了博客程序 ...
- LayaAir引擎——(九)
var h = new Array(); var j = new Array(); var xbCursor = 0; function xbinit() { xbinitName(); xbRect ...
- MIM协议与Base64编码
MIME Protocol 1. MIME的全称是"Multipurpose Internet Mail Extensions",中译为"多用途互联网邮件扩展" ...
随机推荐
- 关于postman软件的安装与使用
1.这个软件是一个模拟发请求的软件 2.这个软件和这个网站的 json 格式数据有着很好的关系 https://www.json.cn/ 他能帮助我们分解代码, 3.在使用(修改的)过程中发现了一个 ...
- 观察者模式-C#实现
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 观察者模式有四个角色:抽象主题.具体主题.抽象观察者.具体观察者. 抽象主题:把所有观察者对象 ...
- ansj --词性说明
背景 Ansj 是一个开源的 Java 中文分词工具,基于中科院的 ICTCLAS 中文分词算法,比其他常用的开源分词工具(如mmseg4j)的分词准确率更高.工具支持词性标注,所以就可以依据词性进行 ...
- PD(Power Delivery)充电协议
关于PD的历史进程,可以在我转载的另一篇文章中了解 http://www.cnblogs.com/Hello-words/p/7851627.html PD 1.0 用的是 BFSK在 VBUS上进行 ...
- UltraEdit(UE)window破解方法
安装UltraEdit(一路下一步,无难点)成功后,打开软件弹出如下使用模式提示信息. 关掉UltraEdit软件,同时 断本机网络.重新打开UltraEdit软件: 点击[输入许可证密 ...
- 如何成为一名出色的Oracle数据库管理员
主要针对Oracle DBA在成长阶段的定位,学习方法等几大方面进行了经典的论述,详细内容请参考下文. 一.定位 Oracle分两大块,一块是开发,一块是管理.开发主要是写写存储过程.触发器什么的,还 ...
- JS——属性绑定
1.普通形式 <script> var stu = new Object(); stu.name = "ww"; console.log(stu);//{name: & ...
- html——行内元素、块元素、行内块元素
行内元素:span ,a, ,strong , em, del, ins.特点:在一行上显示:不能直接设置宽高:元素的宽和高就是内容撑开的宽高. 块元素:div,h1-h6,p,ul,li.特 ...
- ProE复杂曲线方程:Python Matplotlib 版本代码(L系统,吸引子和分形)
对生长自动机的研究由来已久,并在计算机科学等众多学科中,使用元胞自动机的概念,用于生长模拟.而复杂花纹的生成,则可以通过重写一定的生长规则,使用生成式来模拟自然纹理.当然,很多纹理是由人本身设计的,其 ...
- Echarts 动态更新散点图
最近遇到一个作业,要求使用 Echarts 散点图,本来这个图是很容易的,官网上也有很多的教程.但是如果可以动态的更新 Echarts 散点图就更好了.我本身对 js 不感兴趣,经过不停的查找资料 ...