UVA 12166 Equilibrium Mobile (二叉树遍历+贪心)
来源:互联网 发布:maven 打包java环境 编辑:程序博客网 时间:2024/06/05 06:58
题意:题目给一棵二叉树,每个点都有一个对应的权值,对初始的二叉树进行操作,使得修改后的整棵二叉树整体平衡,那么普通的想法枚举每一个点再去确定修改的点数是不现实的,那么考虑一下二叉树的性质,发现如果二叉树某一个结点的权值确定了的话,那么整棵树的整体权值是确定的,深度为deep的单点权值x对应的整体权值为x*2^deep,那么遍历整棵树,对每一个点进行计算整体权值,那么对应某一个整体权值要修改的点个数为总结点数减去某个整体权值,在遍历过程用map记录一下,最后遍历一遍即可
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<iostream>using namespace std;typedef long long ll;char str[10000000];//string str;map<ll,int> base;int sum;void dfs(int deep,int l,int r){ if(str[l]=='[') { int t=0; for(int i=l+1;i<=r;i++) { if(str[i]=='[') t++; else if(str[i]==']') t--; if(!t&&str[i]==',') { dfs(deep+1,l+1,i-1); dfs(deep+1,i+1,r-1); } } } else { ll w=0; for(int i=l;i<=r;i++) w=w*10+str[i]-'0'; sum++; base[w<<deep]++; }}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%s",str); base.clear(); sum=0; dfs(0,0,strlen(str)-1); int maxx=0; for(map<ll,int>::iterator it=base.begin();it!=base.end();it++) maxx=max(it->second,maxx); printf("%d\n",sum-maxx); }}
阅读全文
0 0
- UVA 12166 Equilibrium Mobile (二叉树遍历+贪心)
- UVa 12166 - Equilibrium Mobile <二叉树+DFS>
- 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
- UVa 12166 Equilibrium Mobile
- UVA 12166-Equilibrium Mobile(推导结论)
- [UVa 12166] 修改天平(Equilibrium Mobile)
- Uva-12166-Equilibrium Mobile(逆向思维, map)
- UVA 12166 Equilibrium Mobile (天平性质 + DFS)
- UVA 12166 Equilibrium Mobile 修改天平
- hdu 2767 Proving Equivalences【scc缩点+搭桥】
- jvm性能相关(jvisualvm远程连接配置)
- 利用BeanMap进行对象与Map的相互转换 (在hibernate中 map集合转对象 用得到<重要>)
- 条款05:了解C++默认编写调用哪些函数
- C语言之 snprintf()函数 用法
- UVA 12166 Equilibrium Mobile (二叉树遍历+贪心)
- 13:图像模糊处理(1.8编程基础之多维数组)
- LTE-TDD随机接入过程(1)-目的和分类
- RUP、xp、敏捷过程的含义
- Redis在京东到家的订单中的使用
- 作业
- 安卓toast文字提示
- 人事面试一百问
- jq各种