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的更多相关文章
随机推荐
- 基于TF-IDF值的汉语语义消歧算法
RT,学校课题需要233,没了 话说,窝直接做个链接的集合好了,方便以后查找 特征值提取之 -- TF-IDF值的简单介绍 汉语语义消歧之 -- 句子相似度 汉语语义消歧之 -- 词义消歧简介 c++ ...
- iOS开发UI篇—无限轮播(新闻数据展示)
iOS开发UI篇—无限轮播(新闻数据展示) 一.实现效果 二.实现步骤 1.前期准备 (1)导入数据转模型的第三方框架MJExtension (2)向项目中添加保存有“新闻”数据的pli ...
- bzoj 3130: [Sdoi2013]费用流
#include<cstdio> #include<iostream> #define M 10000 #define inf 0x7fffffff #include<c ...
- CodeForces 686B-Little Robber Girl's Zoo
题目: 有n头数量的动物,开始它们站在一排,它们之间有高度差,所以需要将它们进行交换使得最终形成一个不减的序列,求它们交换的区间.交换的规则:一段区间[l, r]将l与l+1.l+2与l+3..... ...
- mysql之存储过程
一.存储过程 迄今为止,使用的大多数 SQL语句都是针对一个或多个表的单条语句.并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成.例如,考虑以下的情形. 1. ...
- 转换primitive主数据类型
/*转换primitive主数据类型 * 短变长直接转换 * 长变短要强制转换 * 例如:long y = 42; int x = (int)y * String类型转换成primitive类型时可以 ...
- 理解OAuth 2.0(转载)
作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html OAuth是一个关于授权(authorization)的开放网络标 ...
- Linux filesystem detection
16 down vote accepted The reason you can't find it is because, for the most part, it's not in the ke ...
- javascript笔记6-DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API.DOM描绘了一个层次化的节点树,允许程序员添加.修改页面的一部分. 节点层次:DOM可以将任何HTML或XML文档描绘成一个由多层次节点构 ...
- HDU 5358 尺取法+枚举
题意:给一个数列,按如下公式求和. 分析:场上做的时候,傻傻以为是线段树,也没想出题者为啥出log2,就是S(i,j) 的二进制表示的位数.只能说我做题依旧太死板,让求和就按规矩求和,多考虑一下就能发 ...