Uva-12166 Equilibrium Mobile
来源:互联网 发布:js怎么让按钮不可点击 编辑:程序博客网 时间:2024/05/16 06:05
题目链接:Equilibrium Mobile
题目大意:给一个树形结构的天平,求能使整个天平平衡的最少的对砝码的更换次数。
解题思路:要使天平平衡最后情况一定是以某个砝码作为基准。枚举砝码,并记录不改变该砝码使天平平衡的情况下,天平的总权值。最后将所有砝码的数量减去最大次数的最终状态的值,即为最小的修改数。
代码如下:
#include <map>#include <set>#include <stack>#include <queue>#include <cstdio>#include <vector>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;typedef pair<int, int> P;const int inf = 0x3f3f3f3f;const int maxn = 2e4 + 15;map<ll, int> mp;int sum, t;string s;void DFS(int l, int r, int dep){ if(s[l] == '['){ int cnt = 0; for(int i = l + 1; i < r; i++){ if(s[i] == '[') cnt++; if(s[i] == ']') cnt--; if(s[i] == ',' && !cnt){ DFS(l + 1, i - 1, dep + 1); DFS(i + 1, r - 1, dep + 1); } } } else{ ll w = 0; for(int i = l; i <= r; i++) w = w * 10 + s[i] - '0'; sum++; mp[w << dep]++; } return;}int main(){#ifdef LOCAL freopen("in.txt", "r", stdin);#endif ios::sync_with_stdio(false); cin >> t; while(t--){ cin >> s; mp.clear(); sum = 0; DFS(0, s.size() - 1, 0); int ma = -1; for(auto e : mp) ma = max(ma, e.second); int ans = sum - ma; cout << ans << endl; } return 0;}
0 0
- 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 <二叉树+DFS>
- UVA 12166-Equilibrium Mobile(推导结论)
- UVA 12166 Equilibrium Mobile 修改天平
- [UVa 12166] 修改天平(Equilibrium Mobile)
- Equilibrium Mobile UVA
- 12166 - Equilibrium Mobile
- 12166 - Equilibrium Mobile(DFS)
- Uva-12166-Equilibrium Mobile(逆向思维, map)
- UVA 12166 Equilibrium Mobile (天平性质 + DFS)
- android adb常用指令
- 设置了背景图片的TextView,其尺寸设置为wrap_content时,并不是适应文字内容大小
- NSSearchPathForDirectoriesInDomains用法
- 黑马程序员 break在Java中如何跳出多重嵌套循环
- 头晕眼花的Axure
- Uva-12166 Equilibrium Mobile
- 记事本简单实现思路
- FZU 2156 Climb Stairs
- 黑马程序员 String和StringBuffer的区别
- apk openssl版本过低的问题
- 利用顺序表实现集合的并运算
- 黑马程序员 abstract class和interface的区别
- 利用顺序表实现多项式相加
- hdu 5113 Black And White