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


代码:(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);
#endifscanf("%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)。

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

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

  1. [刷题]算法竞赛入门经典(第2版) 4-1/UVa1589 - Xiangqi

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1589 #include<iostream> #incl ...

  2. [刷题]算法竞赛入门经典(第2版) 6-7/UVa804 - Petri Net Simulation

    题意:模拟Petri网的执行.虽然没听说过Petri网,但是题目描述的很清晰. 代码:(Accepted,0.210s) //UVa804 - Petri Net Simulation //Accep ...

  3. [刷题]算法竞赛入门经典(第2版) 4-3/UVa220 - Othello

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa 220 - Othello #include<iostream ...

  4. [刷题]算法竞赛入门经典(第2版) 5-2/UVa1594 - Ducci Sequence

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,20 ms) //UVa1594 - Ducci Sequence #include< ...

  5. [刷题]算法竞赛入门经典 3-10/UVa1587 3-11/UVa1588

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-10/UVa1587:Box 代码: //UVa1587 - Box #include&l ...

  6. 算法竞赛入门经典(第二版)第三章习题

    声明:作者水平有限,只是会基础C语言的小菜,C++还未入门.作者仅根据算法竞赛入门经典(第二版)书上第三章习题所述题意而编写,并未严格按照原题的输入输出编写,代码仅经过个人测试(OJ网站太慢了).代码 ...

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

    刘汝佳<算法竞赛入门经典(第二版)>第三章习题(一) 习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585) 给出一个由O和X组成的串(长度为1~80),统计得分.每个 ...

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

    刘汝佳<算法竞赛入门经典(第二版)>第四章习题(4-1~4-3) 习题4-1 象棋(Xiangai,ACM/ICPC Fuzhou 2011,UVa1589) 考虑一个象棋残局,其中红方有 ...

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

    刘汝佳<算法竞赛入门经典(第二版)>第二章习题 目录 刘汝佳<算法竞赛入门经典(第二版)>第二章习题 习题2-1 水仙花数 习题2-2 韩信点兵 习题2-3 倒三角形 习题2- ...

最新文章

  1. Android--通话录音
  2. 2019,商业智能的10大未来趋势
  3. epoll 或者 kqueue 的原理是什么?
  4. 渗透知识-linux基础命令
  5. Http协议中的各种长度限制总结
  6. 坚持是一件很难的事情
  7. MySQL优化(一):表结构优化
  8. matlab中的方波信号图片_基于Matlab的雷达信号处理仿真
  9. 莫烦Pytorch神经网络第二章代码修改
  10. c语言常用字符串处理函数6,【总结】C语言中常见的字符串处理函数
  11. 控件事件的发生与页面加载的关系
  12. ajax php 返回值 数组,ajax 返回数组怎么解决???
  13. 利用计算机形考试二,计算机应用基础形考试题
  14. 计算机原理课 如何在中小学课堂中变成有趣,在课堂中如何发挥电教辅助教学优势...
  15. 2018年的安卓开发环境搭建
  16. hrm系统源码php,悟空HRM下载_悟空HRM0.1开源版 - 系统之家
  17. 配置activity-alias别名,更改app图标和名字
  18. (3)安装插件-JsDroid引流脚本混合式开发技术系列教程By飞云脚本学院
  19. 一个中东外贸业务员分享的干货
  20. impala迁移到presto

热门文章

  1. 2017 华东师范大学网赛 F.丽娃河的狼人传说 Problem #3263( 贪心)
  2. [数学建模]学习笔记1:初等建模
  3. iphone邮箱看不到已发送_苹果手机邮箱无法发送 iphone邮箱没有已发送邮件
  4. PyTorch 使用torchvision进行图片数据增广
  5. 常用注解,依赖,常用类,插件和其它(自用)
  6. 菱形图案的c++实现
  7. 游戏修改器、外挂原理
  8. Java实现条件性参加会议问题(两种方法)
  9. [Mattermost]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost篇)
  10. 写了一个UUE编码的类.