Description

Input

Output

折半搜索,用散列表记录从原点出发,用了S(状压表示)这几种边(令|S|*2-1<=n),到达(x,y)的最大面积。

#include<cstdio>
#include<cmath>
#include<algorithm>
int ps[][][],pp[],r[],n,ed[],st=,ans;
#define cal(w,x,y,a,b,s) dfs(w,x+(a),y+(b),s+x*(b)-y*(a))
const int P=;
int h[P][],ht=,ds[];
void maxs(int&a,int b){if(a<b)a=b;}
void mins(int&a,int b){if(a>b)a=b;}
void ins(int st,int x,int y,int s){
int X,w,st2=(<<n)--st;
if(ds[st2]==ht){
X=(x+<<|y+)<<|st2;
w=X%P;
while(h[w][]==ht){
if(h[w][]==X){
maxs(ans,h[w][]+s);
break;
}
if((w+=)>=P)w-=P;
}
}else{
ds[st]=ht;
X=(x+<<|y+)<<|st;
w=X%P;
while(h[w][]==ht){
if(h[w][]==X){
maxs(h[w][],s);
return;
}
if((w+=)>=P)w-=P;
}
h[w][]=ht;
h[w][]=X;
h[w][]=s;
}
}
void dfs(int w,int x,int y,int s){
if(w)ins(st,x,y,s);
if(w<)
for(int i=;i<n;++i)if(!ed[i]){
ed[i]=;
st^=<<i;
int v=r[i];
for(int j=;j<pp[v];++j){
int a=ps[v][j][],b=ps[v][j][];
cal(w+,x,y,a,b,s);
cal(w+,x,y,a,-b,s);
cal(w+,x,y,-a,b,s);
cal(w+,x,y,-a,-b,s);
cal(w+,x,y,b,a,s);
cal(w+,x,y,b,-a,s);
cal(w+,x,y,-b,a,s);
cal(w+,x,y,-b,-a,s);
}
st^=<<i;
ed[i]=;
}
}
int main(){
for(int i=;i<=;++i){
for(int j=;j*j*<=i*i;++j){
int z=sqrt(i*i-j*j)+1e-;
if(j*j+z*z==i*i)ps[i][pp[i]][]=j,ps[i][pp[i]++][]=z;
}
}
while(scanf("%d",&n)==&&n){
for(int i=;i<n;++i)scanf("%d",r+i);
ans=;
++ht;
dfs(,,,);
if(!ans)puts("-1");
else if(~ans&)printf("%d\n",ans>>);
else printf("%d.5\n",ans>>);
}
return ;
}

bzoj2515 Room的更多相关文章

随机推荐

  1. python--分布式爬虫

    //server import socket, select, re, queue, redis from multiprocessing import Pool, cpu_count from py ...

  2. oracle中schema指的是什么?

    看来有的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助. 我们先来看一下他们的定义:A schema is a collection of database obje ...

  3. js框架简明

    jquery 主要战场还是在dom这块.其它经典怀旧的2个需要了解一下,mootools, prototype.是他们启发了js向工程化,团队化,协作化发展的转变,yui虽然听说停止开发了,但他的代码 ...

  4. 求助,JS 方法调用的问题,写了返回值,确调用时返回Undefined(新人第一次写)

    文本框txtUserName 的Onbulr 绑定方法 txtUserNameOnblur  这可以正常执行 而下面的btnRegister 的click 事件则无法正常调用    txtUserNa ...

  5. NetworkComms V3 之发送UDP广播消息

    NetworkComms网络通信框架序言 NetworkComms通信框架,是一款来自英国的c#语言编写的通信框架,历时6年研发,成熟稳定,性能可靠. NetworkComms v3目前只支持基本的U ...

  6. Model2模型介绍

    在JSP课程中有 Model1 模型的介绍 模型二: 实例接JSP课程,先去看JSP课程了

  7. tomcat简单文服

    1.修改tomcat配置文件 web.xml 将listings的value值改为true. DefaultServlet在Tomcat中主要是做目录列表(Directory Listing)用. 2 ...

  8. php大力力 [039节] 修改一下后台项目,同时启用印象笔记,要做的事情todo列表,记录在印象笔记,速度快一些

    php大力力 [039节]  修改一下后台项目,同时启用印象笔记,要做的事情todo列表,记录在印象笔记,速度快一些

  9. Win10/UWP新特性系列—Launcher实现应用间的通信

    UWP中,微软为Windows.System.Launcher启动器新增了很多的功能,以前只能启动App,打开指定扩展名文件,对uri协议的解析,以及当启动的应用没有安装时则会提示前往商店下载等. 如 ...

  10. mysql控制台操作

    显示表结构  : show create table  table_name 复制表:insert into table_name1 select * from table_name2