12166 - Equilibrium Mobile(DFS)
来源:互联网 发布:魔方淘宝 编辑:程序博客网 时间:2024/06/10 08:33
枚举每个点,判断其余深度是否存在点的权值为(1 << (deep1 - deep2)) * x
deep1,deep2为2点的深度
写的比较麻烦
#include<cstdio>#include<vector>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int maxn = 1000005;char str[maxn];vector<LL>G[20];LL base[20];int pos,cnt,max_deep;void build(int deep){ max_deep = max(max_deep,deep); if(str[pos] == '['){ pos ++; build(deep + 1); } if(str[pos] >= '0' && str[pos] <= '9'){ LL v = 0; while(str[pos] >= '0' && str[pos] <= '9'){ v = v * 10 + str[pos] - '0'; pos ++; } cnt ++; G[deep].push_back(v); } if(str[pos] == ']'){ pos ++; } else if(str[pos] == ','){ pos ++; build(deep); } return;}void solve(){ int ret = cnt; for(int i = 1; i <= max_deep; i++) sort(G[i].begin(),G[i].end()); for(int i = 1; i <= max_deep; i++){ for(int j = 0; j < G[i].size(); j++){ LL e = G[i][j]; int ans = 0; for(int k = 1; k <= i; k++){ int d = i - k; LL c = base[d] * e; int num = upper_bound(G[k].begin(),G[k].end(),c) - lower_bound(G[k].begin(),G[k].end(),c); ans += num; } for(int k = i + 1; k <= max_deep; k++){ int d = k - i; if(e % base[d]) continue; LL c = e / base[d]; int num = upper_bound(G[k].begin(),G[k].end(),c) - lower_bound(G[k].begin(),G[k].end(),c); ans += num; } ret = min(ret,cnt - ans); } } printf("%d\n",ret); return;}void init(){ for(int i = 0; i <= 16; i++) G[i].clear(); cnt = max_deep = pos = 0;}int main(){ int T; base[0] = 1; for(int i = 1; i <= 16; i++) base[i] = base[i - 1] * 2; scanf("%d",&T); while(T--){ init(); scanf("%s",str); if(str[0] != '['){ printf("0\n"); continue; } build(0); solve(); } return 0;}/*2[[3,7],6][[2,3],[4,5]][[40,40],[40,40]][[2,[1,1]],4]*/
0 0
- 12166 - Equilibrium Mobile(DFS)
- UVa 12166 - Equilibrium Mobile <二叉树+DFS>
- UVA 12166 Equilibrium Mobile (天平性质 + DFS)
- UVa 12166 - Equilibrium Mobile
- UVa 12166 - Equilibrium Mobile
- 12166 - Equilibrium Mobile
- UVa 12166 Equilibrium Mobile
- Uva - 12166 - Equilibrium Mobile
- Uva-12166 Equilibrium Mobile
- UVA - 12166 Equilibrium Mobile
- UVA 12166 Equilibrium Mobile
- UVa 12166 Equilibrium Mobile
- UVa 12166 Equilibrium Mobile
- UVA 12166-Equilibrium Mobile(推导结论)
- UVA 12166 Equilibrium Mobile 修改天平
- [UVa 12166] 修改天平(Equilibrium Mobile)
- uva12166 - Equilibrium Mobile
- HDU 2766 Equilibrium Mobile
- OC重要工作也由编译器来完成?
- 通过读注册表的方法获得 home directory:所有用户
- 【学习笔记】JavaScript编码规范- 空白
- 在web页面上快速生成二维码的两种实用方法
- VC获取Windows所有用户的用户名
- 12166 - Equilibrium Mobile(DFS)
- 文章标题
- CSU1619 Con + tin / (ued + Frac / tions)
- Nginx工作原理和优化、漏洞
- time table
- IOS 实现界面本地化(国际化)
- 怎样在Github上托管开源代码库
- 代码常见的错误
- <%%>和<%! %>和 <%=%>的区别