章七例题七 Mobile Computing UVA - 1354(枚举二叉树)
2017-03-27 16:18
381 查看
感觉到寸步难行。。然后看了大神们的代码,和题解后。可以敲出来,但是感觉自己理解的还不是很深刻
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; int vis[150],n; double a[150]; int node[150]; double val[150],l[150],r[150];//开小了后会WA或者re double rm,ans; void judge(int k) { memset(l,0,sizeof(l)); memset(r,0,sizeof(r)); memset(val,0,sizeof(val)); for(int i=k;i>=1;i--){ if(node[i]==-1) { int x=i*2,y=i*2+1; val[i]=val[x]+val[y]; double L=val[y]/val[i]; double R=val[x]/val[i]; l[i]=min(-L+l[x],R+l[y]); r[i]=max(-L+r[x],R+r[y]); } else if(node[i]) val[i]=a[node[i]]; } double temp=r[1]-l[1]; if(temp-rm<1e-5) ans=max(ans,temp); } void dfs(int now,int kong,int num) { if(num==0) { judge(now-1); return ; } if(node[now/2]!=-1) dfs(now+1,kong,num); else { if(num>kong) { node[now]=-1; dfs(now+1,kong+1,num); node[now]=0; } if(kong==1&&num>1) return ;//这个不能掉了 for(int i=1;i<=n;i++){ if(!vis[i]){ node[now]=i; vis[i]=1; dfs(now+1,kong-1,num-1); node[now]=0,vis[i]=0; } } } } int main() { int t; scanf("%d",&t); while(t--) { scanf("%lf %d",&rm,&n); memset(vis,0,sizeof(vis)); memset(node,0,sizeof(node)); memset(a,0,siz 4000 eof(a)); for(int i=1;i<=n;i++) scanf("%lf",&a[i]); node[1]=-1; ans=-1; if(n==1) printf("%.10lf\n",0.0); else{ dfs(2,2,n); if(ans==-1) printf("-1\n");//不要掉了/n aaa else printf("%.10lf\n",ans); } } return 0; }
相关文章推荐
- 章七例题七 Mobile Computing UVA - 1354(枚举二叉树)
- 章七例题七 Mobile Computing UVA - 1354(枚举二叉树)
- 章七例题七 Mobile Computing UVA - 1354(枚举二叉树)
- 章七例题七 Mobile Computing UVA - 1354(枚举二叉树)
- 章七例题七 Mobile Computing UVA - 1354(枚举二叉树)
- 章七例题七 Mobile Computing UVA - 1354(枚举二叉树)
- 章七例题七 Mobile Computing UVA - 1354(枚举二叉树)
- UVA 1354 Mobile Computing(枚举二叉树+枚举子集)
- UVA - 1354 Mobile Computing: 枚举二叉树 位运算枚举子集,枚举子集的子集 回溯
- UVA 1354 Mobile Computing 枚举二叉树 *
- uva1354 枚举二叉树
- UVA1354 (枚举二叉树)
- 紫书章七 例题2 UVA 11059 Maximum Product
- 例题7-7 天平难题 UVa1354
- 紫书 例题7-2 UVA 11059 暴力枚举
- 紫书例题 11-3 UVa 1151 最小生成树,Kruskal,二进制枚举
- 紫书章六例题九 天平 UVA 839(更新二叉树的节点上的值)
- 例题7-1 UVa725 Division(枚举)
- 紫书章七 例题2 UVA 11059 Maximum Product
- UVA 1354 - Mobile Computing(暴力枚举子集)