【习题 6-6 UVA - 12166 】Equilibrium Mobile
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
枚举一个秤砣的重量不变。
某一个秤砣的重量不变之后。
所有秤砣的重量就固定了。
因为它的兄弟节点的重量要和它一样。
则父亲节点的重量就是这个节点的两倍了。
以此类推可以得到所有节点的重量的值。
第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的更多相关文章
- UVA 12166 Equilibrium Mobile
题意: 给出数个天平,每个天平的结构都类似于二叉树,只有左右重量都相等时才平衡,求每个天平最少改多少个秤砣,也就是叶子结点可以使得整个天平平衡.天平的深度不超过16. 分析: 要使得改动的数量最少,那 ...
- UVA 12166 Equilibrium Mobile(贪心,反演)
直接贪心.先想想最后平衡的时候,如果知道了总重量,那么每一个结点的重量其实也就确定了. 每个结点在左在右其实都不影响,只和层数有关.现在反过来,如果不修改某个结点,那么就可以计算出总质量,取总质量出现 ...
- UVA - 12166 Equilibrium Mobile (修改天平)(dfs字符串表示的二叉树)
题意:问使天平平衡需要改动的最少的叶子结点重量的个数. 分析:天平达到平衡总会有个重量,这个重量可以由某个叶子结点的重量和深度直接决定. 如下例子: 假设根结点深度为0,结点6深度为1,若以该结点为基 ...
- [刷题]算法竞赛入门经典(第2版) 6-6/UVa12166 - Equilibrium Mobile
题意:二叉树代表使得平衡天平,修改最少值使之平衡. 代码:(Accepted,0.030s) //UVa12166 - Equilibrium Mobile //Accepted 0.030s //# ...
- UVa 12166 修改天平
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Uva 12569 Planning mobile robot on Tree (EASY Version)
基本思路就是Bfs: 本题的一个关键就是如何判段状态重复. 1.如果将状态用一个int型数组表示,即假设为int state[17],state[0]代表机器人的位置,从1到M从小到大表示障碍物的位置 ...
- UVA-12166 Equilibrium Mobile(二叉树)
题目大意:改变二叉树上的权值,使树平衡,问最少该几个值. 题目分析:不会做,查的题解.有条奇妙的性质:如果将第d层权值为w的节点为基准做改动,则整棵树的总重量为w<<d,即w*2^d.仔细 ...
- 【例题 7-7 UVA - 1354】Mobile Computing
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 秤砣都是在叶子节点. 可以把它看成一个二叉树. 则我们每次只需要选择任意两个"节点",让他们组成一棵二叉树就可以 ...
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
随机推荐
- IDEA 开发工具在POM.XML文件中增加依赖
在POM.XML 中使用快捷键 ALT+INSERT 选择第一个,输入关键字即可 选择版本,确认,ok
- XTUOJ 1206 Dormitory's Elevator
Dormitory's Elevator Time Limit : 1000 MS Memory Limit : 65536 KB Problem Description The new dorm ...
- cassandra install - +HeapDumpOnOutOfMemoryError -Xss180k
原因分析: You are running out of allocted memory for the JAVA VM (128k) is to less. Modify the line belo ...
- CentOS下部署巡风步骤详解
本博客已经迁移到新的网站,www.je2se.com,请大家移步关注,互相交流,共同成长 巡风Centos 6.5部署指南 基础环境要求: Python2.7+ 安装Centos相关依赖 # Cent ...
- cocos2d-x的声音控制
声音控制SimpleAudioEngine是单例.下面是其方法. [cpp] view plaincopy //获得SimpleAudioEngine的实例 static SimpleAudioEng ...
- 位运算(&、|、^)与逻辑运算(&&、 ||)差别
刚无意在一篇文章中看到了位运算(&.|)和逻辑运算(&&.||)的介绍.想起了自己薄弱的基础知识.于是百度了几把总结了下. 首先从概念上区分下,位运算是将运算符两边的数字换算成 ...
- Css盒模型有哪几部分,标准盒模型和IE盒模型有哪些区别
首先介绍Css的盒模型也就是标准盒模型(BOX Model) 包含了 内容(content) 内边距(padding) 边框(border) 外边框(margin) 这是大家经常用到的,也是现在的标准 ...
- 关于jquery的事件命名空间
在多人协作的前端开发中,或许会遇到一个问题:几个开发人员都给一个元素添加了同样的事件,但是又有开发人员想要解除掉元素身上的某个事件效果,这时候操作起来就有些麻烦,需要用到jquery给我们提供的事件命 ...
- javafx KeyCombination
import javafx.application.Application; import javafx.application.Platform; import javafx.event.Actio ...
- 00081_List接口
1.List接口介绍 (1)有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元 ...