题意:
一颗二叉树可以看成一个杠杆,左右俩边有重量,有到支点长度,判断整个树是否平衡(根据杠杆原理),如果当前结点有左孩子,那么当前左边的重量就是左孩子的总和,右边同理
递归,发现scanf和cin的效率差好多.
AC时间:20ms(scanf),80ms(cin)
#include<stdio.h> #include<iostream> #include<queue> #include<memory.h> using namespace std; const int MAX = 1000; int read(int* ok) { int wl, dl, wr, dr; //cin >> wl >> dl >> wr >> dr; scanf("%d %d %d %d",&wl, &dl, &wr, &dr); if(wl == 0) wl = read(ok); if(wr == 0) wr = read(ok); if(wl * dl != wr * dr) *ok = 0; return wl + wr; } int main() { freopen("d:\1.txt", "r", stdin); int n; cin >> n; while (n--) { int ok = 1; read(&ok); if(ok) { cout << "YES" << endl; } else cout << "NO" << endl; if(n != 0) cout << endl; } return 0; }
终于在voj有70个题了,搜索章节还有29个题,o(︶︿︶)o 唉,洗澡去