【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

枚举一个秤砣的重量不变。
某一个秤砣的重量不变之后。
所有秤砣的重量就固定了。
因为它的兄弟节点的重量要和它一样。
则父亲节点的重量就是这个节点的两倍了。
以此类推可以得到所有节点的重量的值。
第i层应该的重量都是相同的。
用一个map[height][x]统计某层里面有多少个数字x即可。
这样只要循环层数次就好。
复杂度够过了。

【代码】

/*
1.Shoud it use long long ?
2.Have you ever test several sample(at least therr) yourself?
3.Can you promise that the solution is right? At least,the main ideal
4.use the puts("") or putchar() or printf and such things?
5.init the used array or any value?
6.use error MAX_VALUE?
7.use scanf instead of cin/cout?
*/
#include <bits/stdc++.h>
using namespace std; string s;
int n,total;
map <long long,int> mmap[20];
map <int,vector <int> > mmap2; void dfs(int l,int r,int dep){
if (s[l]=='['){
int now = 0,i = l+1; do{
switch (s[i]){
case '[':{
now++;
break;
}
case ']':{
now--;
break;
}
}
i++;
}while (now!=0);
// now==0;
while (s[i]!=',') i++;
// s[i]==','
dfs(l+1,i-1,dep+1),dfs(i+1,r-1,dep+1);
}else{
int x = 0;
for (int i = l;i <= r;i++) x = x*10 + s[i]-'0';
mmap[dep][x]++;
mmap2[x].push_back(dep);
total++;
}
} int main(){
#ifdef LOCAL_DEFINE
freopen("F:\\c++source\\rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
int T;
cin >> T;
while (T--){
for(int i = 0;i<=18;i++) mmap[i].clear();
mmap2.clear();
total = 0;
cin >> s;
n = s.size();
int ans = -1;
if (s[0]!='['){
ans = 0;
}else{
dfs(0,n-1,0);
for (auto temp:mmap2){
long long x = temp.first;
auto v = temp.second;
for (auto dep:v){
int tempans = 0;
int now = dep;
long long xx = x;
while (xx<=(long long) 1e10 && now >= 0){
tempans += mmap[now][xx];
now--;
xx*=2;
}
xx = x;
now = dep;
while (xx%2==0 && now <= 18){
xx/=2;
now++;
tempans += mmap[now][xx];
}
if (ans==-1){
ans = total - tempans;
}else{
ans = min(ans,total-tempans);
}
}
}
}
cout << ans << endl;
}
return 0;
}

【习题 6-6 UVA - 12166 】Equilibrium Mobile的更多相关文章

  1. UVA 12166 Equilibrium Mobile

    题意: 给出数个天平,每个天平的结构都类似于二叉树,只有左右重量都相等时才平衡,求每个天平最少改多少个秤砣,也就是叶子结点可以使得整个天平平衡.天平的深度不超过16. 分析: 要使得改动的数量最少,那 ...

  2. UVA 12166 Equilibrium Mobile(贪心,反演)

    直接贪心.先想想最后平衡的时候,如果知道了总重量,那么每一个结点的重量其实也就确定了. 每个结点在左在右其实都不影响,只和层数有关.现在反过来,如果不修改某个结点,那么就可以计算出总质量,取总质量出现 ...

  3. UVA - 12166 Equilibrium Mobile (修改天平)(dfs字符串表示的二叉树)

    题意:问使天平平衡需要改动的最少的叶子结点重量的个数. 分析:天平达到平衡总会有个重量,这个重量可以由某个叶子结点的重量和深度直接决定. 如下例子: 假设根结点深度为0,结点6深度为1,若以该结点为基 ...

  4. [刷题]算法竞赛入门经典(第2版) 6-6/UVa12166 - Equilibrium Mobile

    题意:二叉树代表使得平衡天平,修改最少值使之平衡. 代码:(Accepted,0.030s) //UVa12166 - Equilibrium Mobile //Accepted 0.030s //# ...

  5. UVa 12166 修改天平

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. Uva 12569 Planning mobile robot on Tree (EASY Version)

    基本思路就是Bfs: 本题的一个关键就是如何判段状态重复. 1.如果将状态用一个int型数组表示,即假设为int state[17],state[0]代表机器人的位置,从1到M从小到大表示障碍物的位置 ...

  7. UVA-12166 Equilibrium Mobile(二叉树)

    题目大意:改变二叉树上的权值,使树平衡,问最少该几个值. 题目分析:不会做,查的题解.有条奇妙的性质:如果将第d层权值为w的节点为基准做改动,则整棵树的总重量为w<<d,即w*2^d.仔细 ...

  8. 【例题 7-7 UVA - 1354】Mobile Computing

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 秤砣都是在叶子节点. 可以把它看成一个二叉树. 则我们每次只需要选择任意两个"节点",让他们组成一棵二叉树就可以 ...

  9. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

随机推荐

  1. Vuejs2.0构建一个彩票查询WebAPP(3)

    整个工程的目录及截图如下,源码下载    使用心得: 1.了解Vue的生命周期很有必要,详情参见博文Vue2.0 探索之路——生命周期和钩子函数的一些理解 2.Vuex全局状态管理真是美味不可言 st ...

  2. 实现人脸识别性别之路---网页上的video标签

    <video> 元素支持三种视频格式: MP4, WebM, 和 Ogg.但是,不同的浏览器对视频格式的支持也不一致,因此为了让浏览器都适应,我们使用source属性来对视频文件格式定义 ...

  3. BZOJ5408: string(广义后缀自动机,LCT)

    传送门 解题思路: 首先在后缀树上,确定了一个节点就相当于确定了一个串,那么一个点对应的串在另外一个点对应的串产生贡献,当且仅当这个点在当前点子树内. 那么考虑一个新的点在串中对串答案的贡献在一条树链 ...

  4. Django_模型操作

  5. 【Uva 1626】Brackets sequence

    [Link]: [Description] 括号序列由这样的规则生成: 1.空字符是一个括号序列; 2.在括号序列两端加上一对括号也是括号序列; 如(s),[s]; 3.两个括号序列A和B,连在一起, ...

  6. SQL char字段类型排序

    我是做的ACCESS时候需要对字段的值进行排序,字段格式是char类型的,但是存的值是数字.现在需要对该字段进行排序. 通过查找,找到以下两种方法,记录下来. 1. 你可以转换成int型再排序 sel ...

  7. [c++]基类对象作为函数參数(赋值兼容规则)

    编程处理教师的基本情况. 要求: 1.定义一个"person"类.用来存储及处理人的姓名.性别.年龄,成员函数自定: 2.定义"teacher"类,公有继承&q ...

  8. Oracle HR 例子用户的建立 10g,11g均可

    Oracle HR 例子用户的建立 10g,11g均可 先将附件(见文章尾部)上的 10 个 .sql 文件放入这个路径中 : $ORACLE_HOME/demo/schema/human_resou ...

  9. jquery10 闭包示例

    o = { a:1, o:{ b:2, f : function(){ alert(o.a); alert(o.b);//undefined } } } o.o.f(); o = { a:7, o : ...

  10. RTSP传输协议之Methods总结

    RTSP/1.0 200 OK Server: DSS/5.5.5 (Build/489.16; Platform/Linux; Release/Darwin; state/beta; ) Cseq: ...