uva 297

来源:互联网 发布:防sql注入 编辑:程序博客网 时间:2024/05/21 03:28

原题

有点烦的一题, 也是计算节点的值, 但是有两棵树, 取两棵树的并集, 也就是两棵树同一个节点的值要尽量取大的

方法很多, 基本上也都是需要给每个结点存一个值, 这个值等于其四个子节点的值之和, 以此类推

这次试了一个以前没用过的方法, 因为子节点的数目是固定的, 所以想给每个结点赋一个ID, 然后用map记录结点的值

子节点从左到右标上序号1,2,3,4, ID就是从根节点(100000)到这个结点的路径上的结点序号串起来

每读一棵新的子树就要记录其四个子节点的值之和, 然后与子树根节点之前的值比较, 更新

一开始还犯了一个错误, 树的深度指的是从根节点到某个结点的路径的长度, 

这样根节点的深度应该为0, 而深度不超过5的树最多可以有六层结点

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#include <string>#include <vector>#include <set>#include <stack>#include <queue>#include <deque>#include <map>#include <list>#include <cassert>#include <iomanip>using namespace std;const int MAXN = 1500;const int BASE = 10;typedef long long LL;/*uva 297关键 : 1.  depth is not more than 5 则最长的路径上有6个结点 2.  给每个node给一个六位数整数作为ID, 即从根节点(根节点为100000)到达这个结点的路径如ID最大的结点为144444*/map<int,int> mark; int Calc(int parent,int deep){char ch;//cout << parent << " " << deep << endl;int NodeNum = 4, ThisSum = 0, t, markNum = parent;if( deep==0 ) NodeNum = 1;for(int i=1; i<=NodeNum; i++){cin >> ch;markNum = parent+i*pow(BASE,5-deep);t = 0; if( ch=='p' ){t = Calc(markNum,deep+1);}else if( ch=='f' ){t = 1024>>(2*deep);}if( t>mark[markNum] ){mark[markNum] = t;//printf("1.mark[%d]=%d\n",markNum,t);}ThisSum += mark[markNum];}if( ThisSum>mark[parent] ){mark[parent] = ThisSum;//printf("2.mark[%d]=%d\n",parent,ThisSum);}return ThisSum;}int main(){//freopen("input2.txt","r",stdin);int T;cin >> T;while( T-- ){mark.clear();Calc(0,0);// 根节点为第0层 , deep = 0 Calc(0,0); printf("There are %d black pixels.\n",mark[0]);}return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗吞食了牙膏怎么办 大猪拉稀不吃食怎么办 猪不发烧不吃食怎么办 天天吃自热米饭怎么办 喝了加热包水怎么办啊 蛋挞没有盒子装怎么办 塑料饭盒盖子被吸住了怎么办 火腿淹的有臭味怎么办 微波炉热饭盖子打不开怎么办 夏天带饭容易馊怎么办? 保温饭盒里有气打不开怎么办 保温饭盒摔了一下打不开怎么办 饭盒跟盖子盖一起打不开怎么办 玻璃杯子盖被水吸住打不开怎么办 电饭煲热剩饭没加水怎么办 微波炉碗盖子吸住了怎么办 微波炉转饭盖子吸住了怎么办 玻璃碗放进微波炉打不开怎么办 乐扣微波炉加热后打不开怎么办 美的微波炉盖子打不开怎么办 美的微波炉门都打不开了怎么办 饭煮好了有异味怎么办 一正常吃饭就胖怎么办 高铁盒饭没15的怎么办 上火车前票丢了怎么办 减肥期吃了汉堡怎么办 寿司店鳗鱼有刺怎么办 吃泡面胃难受该怎么办 吃上火的东西脸上长痘痘怎么办 减肥期间吃撑了怎么办 喝了变质的牛奶怎么办 绿豆糕吃多了会怎么办 小孩抓米饭烫了手怎么办 减肥不来月经了怎么办 吃了馊了的米饭怎么办 饭在冰箱里硬了怎么办 剩米饭反潮了怎么办 吃馊米饭中毒后怎么办? 蒸熟的米饭发黄怎么办 孕妇肉类吃的少怎么办 大米饭坏了吃了怎么办