12166 - Equilibrium Mobile (UVA)

题目链接如下:

Online Judge

一个很简洁的写法:UVa 12166 Equilibrium Mobile——思路题_equilibrium mobile uva - 12166-CSDN博客

才33行,真的NB坏了……

我的比较繁琐的代码(能AC),比较之下就能发现,其实不用构建叶子节点的vec,找到一个叶子节点直接把它对应的平衡树算出来就可以了:

#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <map>
// #define debugstruct node{long long key;int level;node(long long _key, int _level): key(_key), level(_level){}
};
int T;
std::string ss;
std::vector<node> vec;int main(){#ifdef debugfreopen("0.txt", "r", stdin);freopen("1.txt", "w", stdout);#endifscanf("%d\n", &T);while (T--){getline(std::cin, ss);vec.clear();int level = 0;for (int i = 0; i < ss.size(); ++i){if (ss[i] == '['){level++;} else if (ss[i] == ']'){level--;} else if (ss[i] == ','){continue;} else {vec.push_back(node((long long)std::atoi(ss.substr(i).c_str()), level));while (isdigit(ss[i + 1])){i++;}}}int nbr = 0;std::map<long long, int> mp;for (int i = 0; i < vec.size(); ++i){mp[vec[i].key << vec[i].level]++;}for (auto it = mp.begin(); it != mp.end(); ++it){if (it->second > nbr){nbr = it->second;}}printf("%d\n", vec.size() - nbr);}#ifdef debugfclose(stdin);fclose(stdout);#endifreturn 0;
}

前面还写了两个严重超时的解法,还是贴在下面。

(记录自己的愚蠢。)

超时代码1:

#include <string>
#include <iostream>
#include <cstdlib>
#include <vector>
const int maxx = 99999999;
#define debugstruct node{double key;node* left = nullptr;node* right = nullptr;node* parent = nullptr;
};
int T, cnt;
std::string ss;
std::vector<node*> vec;node* findRoot(std::string str){if (isdigit(str[0])){node* temp = new node;temp->key = (double) std::atoi(str.c_str());vec.push_back(temp);return temp;}str = str.substr(1, str.size() - 2);int nbr = 0;int i;for (i = 0; i < str.size(); ++i){if (str[i] == ',' && nbr == 0){break;}if (str[i] == '['){nbr++;} else if (str[i] == ']'){nbr--;}}node* temp = new node;node* l = findRoot(str.substr(0, i));l->parent = temp;node* r = findRoot(str.substr(i + 1));r->parent = temp;temp->key = l->key + r->key;temp->left = l;temp->right = r;return temp;
}void balance(node* rt, double tot){if (!rt->left && !rt->right){if (rt->key != tot){cnt++;}return;}balance(rt->left, tot / 2);balance(rt->right, tot / 2);
}int main(){#ifdef debugfreopen("0.txt", "r", stdin);freopen("1.txt", "w", stdout);#endifscanf("%d\n", &T);while (T--){vec.clear();getline(std::cin, ss);node* root;root = findRoot(ss);int minn = maxx;for (int i = 0; i < vec.size(); ++i){node* temp = vec[i];while (temp->parent){temp->parent->key = temp->key * 2;temp = temp->parent;}cnt = 0;balance(temp, temp->key);if (cnt < minn){minn = cnt;}}printf("%d\n", minn);}#ifdef debugfclose(stdin);fclose(stdout);#endifreturn 0;
}

超时代码2:

#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
const int maxx = 99999999;
#define debugstruct node{long long key;int level;node(long long _key, int _level): key(_key), level(_level){}
};
int T;
std::string ss;
std::vector<node> vec;int main(){#ifdef debugfreopen("0.txt", "r", stdin);freopen("1.txt", "w", stdout);#endifscanf("%d\n", &T);while (T--){getline(std::cin, ss);vec.clear();int level = 0;for (int i = 0; i < ss.size(); ++i){if (ss[i] == '['){level++;} else if (ss[i] == ']'){level--;} else if (ss[i] == ','){continue;} else {vec.push_back(node((long long)std::atoi(ss.substr(i).c_str()), level));while (isdigit(ss[i + 1])){i++;}}}int minn = maxx;for (int i = 0; i < vec.size(); ++i){int cnt = 0;for (int j = 0; j < vec.size(); ++j){if (vec[i].level <= vec[j].level){if (vec[j].key << vec[j].level - vec[i].level != vec[i].key){cnt++;}} else {if (vec[i].key << vec[i].level - vec[j].level != vec[j].key){cnt++;}}}if (cnt < minn){minn = cnt;}}printf("%d\n", minn);}#ifdef debugfclose(stdin);fclose(stdout);#endifreturn 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE---组件的样式冲突scoped

默认情况 &#xff1a;写在组件中的样式会 全局生效 &#xff0c;因此很容易造成多个组件之间的样式冲突问题。 1、 全局样式 &#xff1a; 默认组件中的样式会作用到全局 2、 局部样式 &#xff1a; 可以给组件加上 scoped 属性&#xff0c; 让样式只作用于当前组件 sc…

FastGPT + Xinference + OneAPI:一站式本地 LLM 私有化部署和应用开发

Excerpt 随着 GPTs 的发布,构建私有知识库变得无比简易,这为个人创建数字化身份、第二大脑,或是企业建立知识库,都提供了全新的途径。然而,基于众所周知的原因,GPTs 在中国的使用依然存在诸多困扰和障碍。因此,在当… 随着 GPTs 的发布,构建私有知识库变得无比简易,这…

React全局状态管理

redux是一个状态管理框架&#xff0c;它可以帮助我们清晰定义state和处理函数&#xff0c;提高可读性&#xff0c;并且redux中的状态是全局共享&#xff0c;规避组件间通过props传递状态等操作。 快速使用 在React应用的根节点&#xff0c;需要借助React的Context机制存放整个…

深入探讨 Go 语言中的 Map 类型

深入探讨 Go 语言中的 Map 类型 Go 语言中的 map 类型是一种非常强大且常用的数据结构&#xff0c;它提供了一种键值对的映射关系。本篇博客将深入讨论 Go 中的 map 类型&#xff0c;包括其基本用法、特性、以及一些最佳实践。 基本概念 1. 声明和初始化 在 Go 中&#xff…

mobi文件怎么转换成pdf?

mobi文件怎么转换成pdf&#xff1f;在数字化时代&#xff0c;电子书籍成为了越来越受欢迎的阅读方式。我们可以通过多种格式的电子书来获取知识和娱乐&#xff0c;其中一种常见的格式就是Mobi文件。Mobi文件是亚马逊公司开发的一种电子书格式&#xff0c;它主要用于Kindle设备和…

SL4010升压恒压电源芯片DC3.7V升压5V、12V、24V/5A

SL4010是一款升压恒压电源芯片&#xff0c;可以将DC3.7V的输入电压升压至5V、12V或24V的输出电压&#xff0c;并可提供高达5A的输出电流。这款芯片采用了先进的升压技术&#xff0c;能够实现高效、稳定的电压转换&#xff0c;同时还具有低噪声、低功耗和低成本等优点。在各种需…

【论文阅读】Consistency Models

文章目录 IntroductionDiffusion ModelsConsistency ModelsDefinitionParameterizationSampling Training Consistency Models via DistillationTraining Consistency Models in IsolationExperiment Introduction 相比于单步生成的模型&#xff08;例如 GANs, VAEs, normalizi…

推荐几个Github高星GoLang管理系统

在Web开发领域&#xff0c;Go语言&#xff08;Golang&#xff09;以其高效、简洁、高并发等特性逐渐成为许多开发者的首选语言。有许多优秀的Go语言Web后台管理系统&#xff0c;这些项目星星众多&#xff0c;提供了丰富的功能和良好的代码质量。本文将介绍一些GitHub高星的GoLa…

学会这个昼夜系统,你也能做出一款饥荒生存类游戏DEMO!

学会这个昼夜系统&#xff0c;你也能做出一款饥荒生存类游戏DEMO&#xff01; 《饥荒》作为生存类游戏的老大哥&#xff0c;深受大家喜爱&#xff0c;这款游戏于2012年年底正式公测上线&#xff0c;距今已有10年的时间&#xff0c;从最初的单机版慢慢推出了联机版&#xff0c;…

Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务

技术背景 我们在对接Unity下推送模块的时候&#xff0c;遇到这样的技术诉求&#xff0c;开发者希望在Android的Unity场景下&#xff0c;获取到前后摄像头的数据&#xff0c;并投递到RTMP服务器&#xff0c;实现低延迟的数据采集处理。 在此之前&#xff0c;我们已经有了非常成…

大模型学习之书生·浦语大模型5——基于LMDeploy大模型量化部署实践

目录 大模型部署背景 LMDeploy部署 量化 TurboMind API server 动手实践环节

LCR 173. 点名(二分)

一、题目描述 LCR 173. 点名 某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席&#xff0c;请返回他的学号。 示例 1: 输入: records [0,1,2,3,5] 输出: 4示例 2: 输入: records [0, 1, 2, 3, 4, 5, 6, 8] 输出: 7 二、题目解析…

flink1.14.5使用CDH6.3.2的yarn提交作业

使用CDH6.3.2安装了hadoop集群&#xff0c;但是CDH不支持flink的安装&#xff0c;网上有CDH集成flink的文章&#xff0c;大都比较麻烦&#xff1b;但其实我们只需要把flink的作业提交到yarn集群即可&#xff0c;接下来以CDH yarn为基础&#xff0c;flink on yarn模式的配置步骤…

2024-01-16 创业日记-关于用户需求分析-思考

摘要: 创业公司一个非常大的问&#xff0c;就是制造的产品没有市场。创始人所设想的需求&#xff0c;不是真正的市场上所缺失的&#xff0c;导致开发出的产品不被市场认可。 那么需求是如何确定的呢&#xff1f;需求是怎么来的呢&#xff1f;自己所设想的用户需求&#xff0c…

时间函数 localtime localtime_r

时间函数 localtime localtime_r localtime 和 localtime_r 的函数功能&#xff1a; converts the calendar time timep to broken-time representation 在调用 localtime 和 localtime_t 函数时&#xff0c;需特别注意&#xff1a; localtime 是不可重入函数&#xff0c;非线…

Resemble Enhance音频失真损坏修复AI工具:一个开源语音超分辨率AI模型

Resemble Enhance是一款强大的音频处理工具&#xff0c;可以将嘈杂的录音转化为清晰而有力的声音&#xff0c;为用户提供更优质的听觉体验。这个工具不仅可以有效去除录音中的各种噪声和杂音&#xff0c;还能够恢复音频失真并扩展音频带宽&#xff0c;使原本的声音听起来更加清…

高级分布式系统-第10讲 分布式控制系统

高级分布式系统汇总&#xff1a;高级分布式系统目录汇总-CSDN博客 自动化是关于一切人造系统自动、智能、自主、高效和安全运行的科学与技术 计算机控制技术是实现自动化的主要方法和手段 分布式控制技术是伴随着机器大工业生产而诞生的特殊计算机控制技术 计算机控制系统 …

echarts业务中常用属性设置记录

1.legend计算占比&#xff08;解决占比总和不等于100%的问题&#xff09; //在data中定义两个字段 total:0, znum:0 //计算上面两个值 this.data.forEach(val > this.total parseInt(val.value)); for (let i 0; i < nv.length; i) {if (i ! nv.length - 1) {this.znum…

Qt/QML编程之路:使用camera摄像头(35)

汽车应用中,camera起到了越来越多的作用,数字化的作用,这点无可争议,而作为GUI设计工具,如何让Camera类的应用能更好的发挥作用呢? You can use Camera to capture images and movies from a camera, and manipulate the capture and processing settings that get appl…

网站防御爬虫攻击有哪些方式

很多网站都深受爬虫困扰&#xff0c;网站在被爬虫大量抓取的的时候经常容易被爬虫把服务器资源抓崩了&#xff0c;有的时候&#xff0c;同行也会来爬取我们网站进行数据采集&#xff0c;影响我们站点的原创性&#xff0c;那么如何进行相对应的防护还是非常重要的&#xff01; …