博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
839:Not so Mobile
阅读量:6871 次
发布时间:2019-06-26

本文共 2117 字,大约阅读时间需要 7 分钟。

 

我的思路:可以将天平看做一棵二叉树,二叉树的每个节点要记录其父节点。然后其实就是一个建树的过程,遇到 0 节点就向下延伸,每当一个节点的左右子树确定(其重量也随之确定),就计算其是否平衡,然后一直向上追溯,直到该节点尚未平衡,继续建树,直至整棵树建好,是否平衡也随之确定。

version 1(40ms):

#include
using namespace std;const int maxn = 10000 + 5;int t,wl,dl,wr,dr;struct node{ int w = 0,d = 0; struct node* dad = NULL; struct node* left = NULL; struct node* right = NULL;};node* newnode(){ return new node; }void build_tree(int& mark){ node* root = newnode(); node* t = root; while(!root->w){ scanf("%d%d%d%d",&wl,&dl,&wr,&dr); if(!t->left){ t->left = newnode(); t->left->w = wl; t->left->d = dl; t->left->dad = t; } if(!t->right){ t->right = newnode(); t->right->w = wr; t->right->d = dr; t->right->dad = t; } if(t->left->w && t->right->w){ while(t->left->w && t->right->w){ t->w = t->left->w + t->right->w; if(mark && t->left->w*t->left->d != t->right->w*t->right->d) mark = 0; if(t == root) break; t = t->dad; } t = (!t->left->w ? t->left : t->right); } else if(!t->left->w) t = t->left; else t = t->right; }}int main(){ // freopen("data.in","r",stdin); // freopen("data.out","w",stdout); scanf("%d",&t); while(t--){ int mark = 1; build_tree(mark); printf("%s\n",mark ? "YES" : "NO"); if(t) putchar('\n'); } return 0;}

看了看书上的代码,直接递归就行。。。既简洁又优美。智商的差距。。。

version 2(20ms):

#include
using namespace std;const int maxn = 10000 + 5;int t,w;bool solve(int& w){ int wl,dl,wr,dr; scanf("%d%d%d%d",&wl,&dl,&wr,&dr); int bl = 1,br = 1; if(!wl) bl = solve(wl); if(!wr) br = solve(wr); w = wl + wr; return bl && br && wl*dl == wr*dr;}int main(){ // freopen("data.in","r",stdin); // freopen("data.out","w",stdout); scanf("%d",&t); while(t--){ printf("%s\n",solve(w) ? "YES" : "NO"); if(t) putchar('\n'); } return 0;}

转载于:https://www.cnblogs.com/JingwangLi/p/10202713.html

你可能感兴趣的文章
.NET的URL怎么静态化
查看>>
day06:shell脚本介绍 | shell脚本结构 | 执行data命令用法 | shell脚本中变量
查看>>
Centos7:timedatectl命令
查看>>
LeetCode:Fizz Buzz - Fizz Buzz 游戏
查看>>
如何在Shell中判断一个变量是否为整数
查看>>
juqery验证中文
查看>>
Linux OS Service 'ntpd' (文档 ID 551704.1)
查看>>
Jquery Validate 使用手册
查看>>
课堂录制的FTP配置
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
常见算法的记录
查看>>
ssh 问题
查看>>
Android源代码下载编译
查看>>
nhmicro添加信审功能
查看>>
eclipse安装maven插件-解决requires ‘bundle org.slf4j.api
查看>>
在Centos 5.x或6.x上安装RHEL EPEL Repo
查看>>
TextField 使用与方法总结
查看>>
湿润的武汉,湿润的心;干燥的北京,干涸的心。
查看>>
Help Desk Meet Power Shell
查看>>