UVA 12166 Equilibrium Mobile
题意:
给出数个天平,每个天平的结构都类似于二叉树,只有左右重量都相等时才平衡,求每个天平最少改多少个秤砣,也就是叶子结点可以使得整个天平平衡。天平的深度不超过16。
分析:
要使得改动的数量最少,那么就至少有一个秤砣不变,然后以这个秤砣为基准来调整整个天平。天平的结构是二叉树,那么由此我们可以得出,如果以深度为d重量为w的秤砣为基准,那么整个天平的重量就是w * pow(2, d),即w << d。当然,可能会有一些秤砣算出的以各自为基准的天平总重量相同,设天平总重量为sum,那么这些秤砣的数量就表示了如果使天平的总重量为sum,需要使多少个秤砣保持不变。用map<long long,int>a,表示以a[i]为基准需要改动多少个。
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <map>using namespace std;map<long long,int>a;int sum;string line;void dfs(int d,int s,int l){ if(line[s]=='[') { int p=0; for(int i=s+1;i!=l;++i) { if(line[i]=='[') ++p; if(line[i]==']') --p; if(p==0&&line[i]==',') { dfs(d+1,s+1,i-1); dfs(d+1,i+1,l-1); } } } else { long long w=0; for(int i=s;i<=l;++i) w=w*10+line[i]-'0'; ++sum,++a[w<<d]; }}int main(){ int T; cin>>T; while(T--) { cin>>line; a.clear(); sum=0; dfs(0,0,line.size()-1); int maxn=0; map<long long,int>::iterator it; for(it=a.begin();it!=a.end();it++) maxn=max(maxn,it->second); cout<<sum-maxn<<endl; }}
转载于:https://www.cnblogs.com/137033036-wjl/p/4890031.html
UVA 12166 Equilibrium Mobile相关推荐
- UVA - 12166 Equilibrium Mobile
/* 题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_pro ...
- [刷题]算法竞赛入门经典(第2版) 6-6/UVa12166 - Equilibrium Mobile
题意:二叉树代表使得平衡天平,修改最少值使之平衡. 代码:(Accepted,0.030s) //UVa12166 - Equilibrium Mobile //Accepted 0.030s //# ...
- UVA - 12569 Planning mobile robot on Tree (EASY Version) BFS
题意:有一颗n个节点的树,其中一个节点有机器人,指定m个节点有障碍物,指定终点,问最少需要移动多少步才能到达,移动过程中遇到障碍物需要将其移动到空地. 分析:bfs搜索,是每次都对障碍物进行移动,将障 ...
- UVa12166 Equilibrium Mobile修改天平(二叉树+dfs)
题目大意:给定一个深度不超过16的二叉树,代表一个天平,问至少修改多少个秤砣,才能使天平平衡. 题目意思很简单,就是找一个可以使整个天平修改次数最少的点,一个点可以确定整个天平,开始我就用的这个思路, ...
- UVA12166 Equilibrium Mobile
VJ传送门 一道思维题,刚开始看的时候没什么思路,在博客园上参考了大佬的解析,在这里总结一下. 一.分析 这道题要求让天平平衡所需要的最小改动次数,至少有一个不变,我们可以先选定一个不变的基准,然后改 ...
- 《算法竞赛入门经典(第2版)》——学习记录
前言: 这里主要记录本人在学习紫书过程中充分理解过的题目的AC代码,便于以后回顾时查找代码和思路,毕竟看别人的真的有点难懂.此外,本书甚至是本书之外的相关知识学习也可能在此留下记录. 作为一只 ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- 算法竞赛入门经典(第二版)-刘汝佳-第六章 数据结构基础 习题(12/14)
文章目录 说明 习题 习6-1 UVA 673 平衡的括号 习6-2 UVA 712 S - 树 习6-3 UVA 536 二叉树重建 习6-4 UVA 439 骑士的移动 习6-5 UVA 1600 ...
- 【三种解法】Not so Mobile UVA - 839_19行代码AC
立志用最少的代码做最高效的表达 Before being an ubiquous communications gadget, a mobile was just a structure made o ...
最新文章
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
- np.eye()的函数能将一个label数组,大小为(1,m)或者(m,1)的数组,转化成one-hot数组
- 用Ext 2.0 combobox 做的省份和城市联动选择框
- python歌词统计单词词频_Python爬虫网易云歌词及词频统计
- python的盈利模式_八大盈利模式是什么?一篇文教会你盈利模式分析!
- UnitTest in .NET(Part 1)
- Linux块设备IO子系统
- java 实现中文排序,Java自定义比较器实现中文排序
- javascrip中setTimeout和setInterval
- 技术人的折腾(二)-缺少的东西,你迟早要补起来
- 《高效能人士的7个习惯》读后摘记
- 盘点苹果乔布斯憎恨Google的十大原因
- svm图片多分类python代码_[OpenCV随笔]-OpenCV3.x中SVM多分类使用(代码篇)
- python自回归模型_向量自回归模型(VAR)到底厉害在哪里?
- DPCM之预测误差均方值推导最小二乘法总结
- walking机器人仿真教程-应用-多点导航结合闹铃播放实现移动闹钟
- C#Code128条形码生成
- debian8.7 下配置fai机环境
- wps可以登录网页版_wps网页版入口_WPS个人免费版_点点游
- invalid byte 1 of 1-byte UTF-8 sequence