bzoj2515 Room
Description
.jpg)
Input
.jpg)
Output
.jpg)
折半搜索,用散列表记录从原点出发,用了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的更多相关文章
随机推荐
- ios基础篇(十六)——UIWebView的基本使用
UIWebView是内置的浏览器控件,可以用它来浏览网页.打开文档等.UIWebView是一个混合体,具体的功能控件内置的,实现一些基本的功能.UIWebView可以查看Html网页,pdf文件,do ...
- javascript画直线和画圆的方法(非HTML5的方法)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WCF初探-5:WCF消息交换模式之双工通讯(Duplex)
双工通讯Duplex具有以下特点: 1它可以在处理完请求之后,通过请求客户端中的回调进行响应操作 2.消息交换过程中,服务端和客户端角色会发生调换 3.服务端处理完请求后,返回给客户端的不是reply ...
- WCF初探-17:WCF数据协定之等效性
数据协定等效性特点概述 对于客户端要将某种类型的数据成功发送到服务,或者服务要将数据成功发送到客户端的情况,接收端上并不一定必须存在此发送数据类型. 唯一的要求是两种类型的数据协定应该等效. 要使数据 ...
- linux 实战使用,上传git 解决冲突
Last login: Fri Dec 18 09:48:55 on ttys000lidongxiaodeiMac:~ lidongxiao$ cd /Users/lidongxiao/Docume ...
- MONGODB 与sql聚合操作对应图
MongoDB 高级查询条件操作符 2012-04-25 15:35:19| 分类: MongoDB | 标签:mongodb使用 mongodb查询 |举报|字号 订阅 http://blo ...
- [转]Android,Yocto,Meego构建系统的区别
http://m.blog.csdn.net/blog/sonach_tjsd/6647829
- iOS 图片填充 UIImageView (contentMode)
掐指算下来做iOS开发也是有两年多的时间了,然后今天一个超级常用的控件让我颜面大跌,于是我准备把自己的丢人行径公之于众.如果您看到我这篇文章时和我一样,也是刚刚知道这项功能,那么您就当收获了一个... ...
- 关于javascript中的===和==
=是赋值符号,==是等于,===是严格等于. 对于等号两边的数值,如果类型不相同会先转换类型再比较,===则不会转换类型. 例如3和“3”在==比较下true,在===下是false, null和un ...
- python多线程监控指定目录
import win32file import tempfile import threading import win32con import os dirs=["C:\\WINDOWS\ ...