关闭

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

标签: 算法竞赛入门经典UVa
279人阅读 评论(0) 收藏 举报
分类:

题意:二叉树代表使得平衡天平,修改最少值使之平衡。


代码:(Accepted,0.030s)

//UVa12166 - Equilibrium Mobile
//Accepted 0.030s
//#define _XIENAOBAN_
#include<cstdio>
#include<cstring>
#include<map>

int T;
int total;
std::map<long long, int> leaf;

void build(int dp) {
    char c(getchar());
    if (c == '[') {
        build(dp + 1),build(dp + 1);
        getchar();
        return;
    }
    long long n(0);
    do {
        n = n * 10 + c - '0';
        c = getchar();
    } while (c >= '0' && c <= '9');
    ++leaf[n<<dp];
    ++total;
    return;
}

int main()
{
#ifdef _XIENAOBAN_
#define gets(T) gets_s(T, 129)
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif

    scanf("%d",&T);
    while (getchar() != '\n');
    while (total = 0,leaf.clear(),T--) {
        build(0);
        int mx(0);
        for (auto p(leaf.begin());p != leaf.end();++p)
            if (p->second > mx) mx = p->second;
        printf("%d\n",total - mx);
    }
    return 0;
}

分析:题目给了每一片树叶的值与深度与树的形状。
由题,每个结点(除了树叶)的值为左右儿子之和,且其左右儿子值均相同。
推出,确定任意树叶与树的形状,其他结点的唯一可能的值均可求出(唯一确定)。
推出,确定任意结点与树的形状,其他结点的唯一可能的值均可求出(唯一确定)。
反之,若根节点值为N,且已知树的形状,可推出每个树叶的唯一可能的值(唯一确定)。

一开始想在以每个树叶为基准的情况下求出其他所有树叶的对应值,所以要遍历每个树叶,并对每个树叶遍历其他树叶求是否需要改变,时间复杂度O(n^2),明显就麻烦。
看了题解,既然以某一树叶唯一确定一棵树,则只需求出以每片树叶为基准下的根节点值,看所有树叶对应根节点值相同的最多的,就是不需要改动的树叶最多的情况。时间复杂度O(n)。

唉,大神们的逆向思维就是厉害。论审题、分析题目的重要性。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

算法竞赛入门经典(第二版) 习题2-6 排列(permutation)

page 35: 用1,2,3,……9组成3个三位数 abc,def和ghi,每个数字恰好试用一次,要求abc:def:ghi=1:2:3。按照"abc def ghi"的格式输出所有解,每行一个解...
  • AgoniAngel
  • AgoniAngel
  • 2015-08-04 19:05
  • 1117

刘汝佳《算法竞赛入门经典(第二版)》习题(二)

水仙花数,输出100~999中的所有水仙花数。若3位数ABC满足ABC=A²+B²+C²,则称其为水仙花数。韩信点兵。倒三角形,输入正整数n≤20,输入一个n层的倒三角形。子序列的和,输入两个正整数,...
  • qq_37653144
  • qq_37653144
  • 2017-04-22 22:16
  • 1619

算法竞赛入门经典(第二版)-刘汝佳-第三章 数组与字符串 例题+习题(17/18)

说明本文是我对第三章题目的练习总结,建议配合紫书——《算法竞赛入门经典(第2版)》阅读本文。 另外为了方便做题,我在VOJ上开了一个contest,欢迎一起在上面做:第三章contest例题例3-1...
  • thudaliangrx
  • thudaliangrx
  • 2016-02-19 17:28
  • 3530

[刷题]算法竞赛入门经典(第2版) 6-9/UVa127 - "Accordian" Patience

题意:52张牌排一行,一旦出现任何一张牌与它左边的第一张或第三张“匹配”,即花色或点数相同,则须立即将其移动到那张牌上面,将其覆盖。能执行以上移动的只有压在最上面的牌。直到最后没有牌能向左移动。 注...
  • XieNaoban
  • XieNaoban
  • 2017-01-31 15:25
  • 186

[刷题]算法竞赛入门经典(第2版) 6-14UVa12118 - Inspector's Dilemma

DesicriptionIn a country, there are a number of cities. Each pair of city is connected by a highway,...
  • XieNaoban
  • XieNaoban
  • 2017-07-20 22:02
  • 197

[刷题]算法竞赛入门经典(第2版) 6-8/UVa806 - Spatial Structures

题意:黑白图像的路径表示法代码:(Accepted,0.120s)//UVa806 - Spatial Structures //Accepted 0.120s //#define _XIENAOBA...
  • XieNaoban
  • XieNaoban
  • 2017-01-30 12:58
  • 213

算法竞赛入门经典(第2版)习题3-6 纵横字谜的答案 Crossword Answers UVa232

写这题用了一上午,样例数据都过了后提交发现WA。 反复jianch
  • archya
  • archya
  • 2014-07-11 12:23
  • 1806

算法竞赛入门经典(第2版)例题4-6 师兄帮帮忙 (A Typical Homework UVa 12412)

这道例题书上要求自己补全daim有个bug卡了我
  • archya
  • archya
  • 2014-08-02 08:07
  • 1615

[刷题]算法竞赛入门经典(第2版) 6-11/UVa10410 6-13/UVa215

最近刷题量大,不高兴写题解了。以后算竟的题目可能只是跳着做做了。题目:6-11 UVa10410 - Tree Reconstruction//UVa10410 - Tree Reconstructi...
  • XieNaoban
  • XieNaoban
  • 2017-07-06 22:28
  • 126

Uva12166 Equilibrium Mobile 【递归建树】【习题6-6】

本题思路很重要啊!
  • GuoZLH
  • GuoZLH
  • 2017-01-22 00:39
  • 136
    个人资料
    • 访问:56702次
    • 积分:1365
    • 等级:
    • 排名:千里之外
    • 原创:92篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    最新评论