欢迎来到千学网!
您现在的位置:首页 > 实用文 > 其他范文

树形大赛范文

时间:2023-06-25 09:18:03 其他范文 收藏本文 下载本文

下面小编给大家整理的树形大赛范文,本文共14篇,欢迎阅读与借鉴!

树形大赛范文

篇1:树形住房作文

树形住房作文

未来的某一天,你会看到碧绿无垠的草原,蔚蓝广阔的大海,平静安详的原野,生机勃勃的丛林,坐着飞机朝下看,你会看到有每个地方都固定的分布着几棵大树,那么茂密,突兀却毫无违和感。

如果近距离靠近“大树”,你会发现,那上面居然会有门、窗!没错,你没有看错,这种“大树”就是目前人类最普遍的住房,树形住房在2050年前很少见,但当东方科学家们研究了出来以后,并对它进行推广,人类自然而然的接受了它们。

树形住房具有抗震、防洪、防沙尘暴等功能,因为在2050年代,地球几乎每天都要发生地震,因为人类的贪婪的索要,地球上常常下起大雨,大海愤怒的卷起浪涛,洪水扑向沿海城市,淹没了哭叫着的生物,于是树形住房出现了。

树形住房的外表十分敏感,只要地下传来微微的.响动,树形住房就会缩成一个类似于火箭的形状,浮在空中;树形住房和正常的大树一样,可以化光能为氧气,吸收二氧化碳,净化空气,但效果却高于普通的树木,因此沙尘暴便会少了很多;洪水是奈何不了树形住房的,树形住房是由轻便的塑料制成的。

因为塑料没法处理,因此被科学家们加工成一块块坚固的建房材料,用于树形住房。而加入的纳米感控器又可以完美的将树形住房变成一个有着自主思想的生物。在树形住房的外表上,有着机械树木,这是科学家们为了防止树木灭绝,专门研制出的半机半木的生物,既保留了树木的功能,又可以让树木吸收二氧化碳那释放氧气的效果增强。

树形住房外表很像大树,但其实内部完全是符合现代人的审美观。你可以把它设定成你心中的完美住房,或者古典风,或者欧洲风,或者简约风等等。

总之,树形住房的出现,让地球停止了哭泣,天空是清澈的蓝色,草地是活力的绿色,大海是微笑的蓝色,远方,传来几声小鸟的叫声。

篇2:制作树形文字效果

希望这个教程对网的朋友们有所帮助,我们先来看看最终效果图

1.启动Photoshop CS2中文版,新建一个文档,大小自定,背景色设置为黑色,然后输入文本,并将文本设置为如图1所示的颜色,

图1

2.双击图层调板中文本图层名称右侧空白区域,打开“图层样式”对话框,按如图2所示设置“斜面和浮雕”图层样式。

图2 最终效果图

1.启动Photoshop CS2中文版,新建一个文档,大小自定,背景色设置为黑色,然后输入文本,并将文本设置为如图1所示的颜色。

图1

2.双击图层调板中文本图层名称右侧空白区域,打开“图层样式”对话框,按如图2所示设置“斜面和浮雕”图层样式。

图2 设置完毕单击“确定”按钮可以看到如图3所示的文本效果。

图3

3.选择菜单命令“图层|图层样式|创建图层”,然后将得到的两个图层合并到一起。选择工具箱中的“涂抹工具”,在菜单栏下方的选项栏中按如图4所示进行设置。

图4

4.使用“涂抹工具”向下涂抹第一个字母下边缘,如图5所示。

图5

5.继续涂抹,得到根的形状,如图6所示,

图6 继续,如图7。

图7

6.仍使用“涂抹工具”,绘制出如图8所示的环绕字母的树藤。

图8

把所有字母的树根和树藤都绘制完毕,效果如图9所示。

图9 7.使用“画笔工具”画一些下垂的枝条,如图10所示。

图10

8.按快捷键F5打开“画笔”调板,从自定义画笔中选择叶子形状的画笔,然后应用如图11所示的设置。

图11

9.按如图12所示设置画笔的散布选项,将“数量抖动”设置为86%,让叶子散布的距离更大。

图12 10.使用设置好的画笔在字母的上半部分画出下垂的绿色枝条,最好在新图层上画,过程如图13、图14、图15所示。

图13

图14

图15

11.对其余的字母重复上述操作,最后可得到如图16所示的树形字特效。

图16

篇3:hdu1011 树形dp背包

Problem Description You, the leader of Starship Troopers, are sent to destroy a base of the bugs. The base is built underground. It is actually a huge cavern, which consists of many rooms connected with tunnels. Each room is occupied by some bugs, and their brains hide in some of the rooms. Scientists have just developed a new weapon and want to experiment it on some brains. Your task is to destroy the whole base, and capture as many brains as possible.

To kill all the bugs is always easier than to capture their brains. A map is drawn for you, with all the rooms marked by the amount of bugs inside, and the possibility of containing a brain. The cavern's structure is like a tree in such a way that there is one unique path leading to each room from the entrance. To finish the battle as soon as possible, you do not want to wait for the troopers to clear a room before advancing to the next one, instead you have to leave some troopers at each room passed to fight all the bugs inside. The troopers never re-enter a room where they have visited before.

A starship trooper can fight against 20 bugs. Since you do not have enough troopers, you can only take some of the rooms and let the nerve gas do the rest of the job. At the mean time, you should maximize the possibility of capturing a brain. To simplify the problem, just maximize the sum of all the possibilities of containing brains for the taken rooms. Making such a plan is a difficult job. You need the help of a computer.

Input The input contains several test cases. The first line of each test case contains two integers N (0 < N <= 100) and M (0 <= M <= 100), which are the number of rooms in the cavern and the number of starship troopers you have, respectively. The following N lines give the description of the rooms. Each line contains two non-negative integers -- the amount of bugs inside and the possibility of containing a brain, respectively. The next N - 1 lines give the description of tunnels. Each tunnel is described by two integers, which are the indices of the two rooms it connects. Rooms are numbered from 1 and room 1 is the entrance to the cavern.

The last test case is followed by two -1's.

Output For each test case, print on a single line the maximum sum of all the possibilities of containing brains for the taken rooms.

Sample Input

5 1050 1040 1040 2065 3070 301 21 32 42 51 120 7-1 -1

Sample Output

507

/**hdu 1011 树形dp背包题目大意:一棵树有n个节点,每个节点有一定的bug值和价值,一个人从1出发有m个兵(1个兵可以打20个bug),经过一个点 要留下足够的兵才能往下走并且获得该点的价值,问如何用m个兵获得最大的价值解题思路:背包问题,

hdu1011 树形dp背包

,状态转移方程为:dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]);(j:num~m;k:1~j-num;u为v的父亲节点) 注意:房间bug数目为0,也要一个士兵。*/#include#include#include #includeusing namespace std;const int maxn=105;int head[maxn],ip;int n,m,dp[maxn][maxn],a[maxn],b[maxn];struct note{ int v,next;}edge[maxn*4];void init{ memset(head,-1,sizeof(head)); ip=0;}void addedge(int u,int v){ edge[ip].v=v,edge[ip].next=head[u],head[u]=ip++;}void dfs(int u,int pre){ int num=(a[u]+19)/20;///获得该结点需要的士兵数目 for(int i=num;i<=m;i++) dp[u][i]=b[u]; for(int i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].v; if(v==pre)continue; dfs(v,u); for(int j=m;j>=num;j--) { for(int k=1;k+num<=j;k++) { dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]); } } }}int main(){ while(~scanf(%d%d,&n,&m)) { if(n==-1&&m==-1)break; for(int i=1;i<=n;i++) {scanf(%d%d,&a[i],&b[i]); } init(); for(int i=0;i

篇4:两个树形金银花新品种

推荐两个树形金银花新品种

1.金丰1号 传统金银花一个结节处只能生长2个花针,金丰1号一个结节处可生长20~50个花针,多者可达100多个.金丰1号属树状木本金银花,稍加修剪,可长成树状,可密植夺高产,丰产期能株产干花1.5~2千克,高产2.5千克以上,亩(1亩=667平方米,下同)栽330株,亩产值3万元以上.而且这种金银花,一年种植可连续采收50年以上,真可算是“摇钱树”.金丰1号具有以下特点.

作 者:范仲先  作者单位:江苏启东市合作镇洋桥村良种所基地,22615 刊 名:新农村 英文刊名:NEW COUNTRYSIDE 年,卷(期): “”(11) 分类号:S5 关键词: 

篇5:poj 2342Anniversary party(树形dp)

Language:Anniversary partyTime Limit:1000MSMemory Limit:65536KTotal Submissions:4594Accepted:2607

Description

There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the supervisor relation forms a tree rooted at the rector V. E. Tretyakov. In order to make the party funny for every one, the rector does not want both an employee and his or her immediate supervisor to be present. The personnel office has evaluated conviviality of each employee, so everyone has some number (rating) attached to him or her. Your task is to make a list of guests with the maximal possible sum of guests‘ conviviality ratings.

Input

Employees are numbered from 1 to N. A first line of input contains a number N. 1<= N<= 6 000. Each of the subsequent N lines contains the conviviality rating of the corresponding employee. Conviviality rating is an integer number in a range from -128 to 127. After that go N C 1 lines that describe a supervisor relation tree. Each line of the tree specification has the form.:

L K

It means that the K-th employee is an immediate supervisor of the L-th employee. Input is ended with the line

0 0

Output

Output should contain the maximal sum of guests‘ ratings.

Sample Input

711111111 32 36 47 44 53 50 0

Sample Output

5

Source

Ural State University Internal Contest October‘ Students Session

#include#include#include#include#include#include#include#include#include#include#define L(x) (x<<1)#define R(x) (x<<1|1)#define MID(x,y) ((x+y)>>1)#define eps 1e-8typedef __int64 ll;using namespace std;#define N 6005int n;int dp[N][2],vis[N],father[N];void dfs(int x){ int i,j; vis[x]=1; for(i=1;i<=n;i++) if(!vis[i]&&father[i]==x) { dfs(i); dp[x][1]+=dp[i][0]; dp[x][0]+=max(dp[i][0],dp[i][1]); }}int main{ int i,j; while(~scanf(“%d”,&n)) { memset(dp,0,sizeof(dp)); memset(vis,0,sizeof(vis)); memset(father,0,sizeof(father)); for(i=1;i<=n;i++) scanf(“%d”,&dp[i][1]); int e,s; while(scanf(“%d%d”,&s,&e),s+e) { father[s]=e; } i=1; while(father[i]) i=father[i]; dfs(i); printf(“%d\n”,max(dp[i][1],dp[i][0])); } return 0;}

篇6:测试系统树形诊断技术

测试系统树形诊断技术

介绍了测试系统中故障树形分析模型的.基本原理、建立及应用情况.通过对诊断系统的故障数据库的不断完善,该模型将在固体发动机地面试验测试系统中准确、快速地确定故障部位发挥重要作用.

作 者:张文琪 ZHANG Wen-qi  作者单位:中国航天工业总公司四院401所,西安,710025 刊 名:固体火箭技术  ISTIC EI PKU英文刊名:JOURNAL OF SOLID ROCKET TECHNOLOGY 年,卷(期): 22(2) 分类号:V435+.6 关键词:测试设备   故障树形图分析   故障诊断专家系统  

篇7:树形月季养殖方法与防虫方法

在换盆时,如果将植株根部修剪过重,使其吸收能力难以恢复,打破了地上部和地下部的平衡,也会造成植株死亡。

树形月季养殖方法:枝条修剪

不断修剪。要使盆栽月季保持植株生长活力,经常开出更多更好的花朵,需要不断修剪,剪去部分老枝,促发薪枝。因为月季是在当年生的新枝条上开花。

盆栽宜结合早春换盆进行强剪,大株月季应从基部剪除所有枯枝、病枝、纤弱枝以及交叉枝等,保留3-5个健壮枝条,并进行短截;一般长势强壮的成株,可剪去枝条的l/2,长势较弱的剪去2/3,在每个枝条上保留一定数量向外侧生长的腋芽,即可形成适当数量的花枝,使其花开不断。

树形月季几种常见病及防治方法

一、黑斑病

黑斑病菌为世界性病害,属于半知菌并门、放线孢属,对月季危害极为严重。叶面、花朵、新稍均有发生,初发时叶片上呈大小不等的黑斑,后扩大并呈黄褐色或暗紫色,最后变为灰褐色,严重时新稍枯死,整株叶片全部脱落,变为光杆。梅雨期和秋雨季是黑斑病发病高峰,夏季温热多雨发病也很强烈,在此期间要增加施药次数。

防治方法:

1、冬季清除落叶后喷洒5度石硫合剂,并彻底剪除病叶病枝,减少侵染源;

2、多施磷钾肥,提高植株抗病能力;

3、发病期尽量少喷水,必要时只在晴朗的早上升温时进行,避免长时间浇湿叶面;

4、发病初期喷施72%克露可湿性粉剂600倍液,或喷施64%杀毒矾可湿性粉剂500倍液。交替使用,每5—7天喷药一次,连续喷2—3次。

二、白粉病

白粉病菌属于子束菌并门、白粉菌目。主要危害嫩梢、幼叶和花。明显症状是染病部位出现白色粉状物。初期叶片上产生褪绿黄斑,以后叶背面出现白斑,并逐渐扩大成不规则状。严重时白斑连接成片,嫩梢卷曲,皱缩,花朵畸形,叶柄及皮刺上的白粉很难剥离,致使植株落叶,花蕾不能开放。白粉病以春季(5至6月)和秋季(9至10月)发生较多,为发病高峰期。北部地区主要在春季危害,秋季发生量少。气温高、湿度大、闷热、通风差时发病较重。

防治方法:

1、秋冬清除病叶病蕾,早春时剪除病芽、病枝,增强通风,少施氮肥,多施磷钾肥。

2、发芽前喷施5度石硫合剂,发病初期喷施80%必备必备可湿性粉剂400倍液;或喷施70%甲基拖布津可湿性粉剂1000倍液;或喷施15%粉碳宁可湿性粉剂1000倍液并加少许洗衣粉。喷药每隔5—7天1次,连喷2—3次。

篇8:一种树形评估指标体系的建立方法

一种树形评估指标体系的建立方法

针对目前系统综合评估实践中建立树形指标体系仅依靠专家知识,缺乏理论上较为完备、使用时简单易行方法的现状,以能提供良好层次结构指标体系的`ISM法为基础,利用简单的“复制-分配”思想,将同时对多个上级元素起作用的下级元素进行复制,将复制副本归入相应的上一级元素之下,通过该方法将ISM法生成的网状指标体系变成树形指标体系.同时还引入了灵敏度分析,灵敏度大的元素应获得评估者的更多关注.

作 者:张晓峰 裘杭萍 任正平ZHANG Xiao-feng QIU Hang-ping REN Zheng-ping  作者单位:解放军理工大学指挥自动化学院,江苏,南京,210007 刊 名:火力与指挥控制  ISTIC PKU英文刊名:FIRE CONTROL AND COMMAND CONTROL 年,卷(期): 32(6) 分类号:O212.1 关键词:系统评估   指标体系   树形结构  

篇9:树形聚合物及功能化结构设计研究新进展

树形聚合物及功能化结构设计研究新进展

综述了树形聚合物的最新研究进展,重点介绍了近年来树形聚合物功能化结构设计及其在光、电信息及生物技术等新领域中的应用研究、发展趋势和应用前景.

作 者:游秀东 向安 高建平于九皋 Mario Gauthier  作者单位:游秀东,向安,高建平,于九皋(天津大学化学系,天津,300072)

Mario Gauthier(Dept of Chem Uni Of Waterloo,Canada)

刊 名:高分子材料科学与工程  ISTIC EI PKU英文刊名:POLYMER MATERIALS SCIENCE & ENGINEERING 年,卷(期): 19(2) 分类号:O631.1+1 关键词:树形聚合物   光开关   发色基团   光获 体系   生物探针  

篇10:BZOJ 3829 Poi FarmCraft 树形DP+贪心

题目大意:给定一棵树,从1号节点出发对树进行欧拉遍历,每到达一个点这个点就开始装MC,每个点装MC的时间不同,最后回到1号节点装MC,求所有人都能联机的最少时间

令f[x]为对第x个节点进行欧拉遍历的时间,g[x]为对第x个节点进行欧拉遍历并完成所有节点的装机的最小时间

那么在每个节点以什么顺序遍历每棵子树呢?

我们发现装机多出来的时间 即g[x]-f[x]可以用来遍历其它子树 那么显然要从g[x]-f[x]大的子树开始遍历

因此对每个节点的子树按照g[x]-f[x]递减排个序即可

时间复杂度O(nlogn) 怎么这么慢……

#include#include#include#include #define M 500500using namespace std;struct abcd{ int to,next;}table[M<<1];int head[M],tot;int n;int a[M],f[M],g[M];//f表示遍历所需时间,g表示遍历并装机完毕所需时间void Add(int x,int y){ table[++tot].to=y; table[tot].next=head[x]; head[x]=tot;}bool Compare(int x,int y){ return g[x]-f[x] >g[y]-f[y];}void Tree_DP(int x,int from){ int i; for(i=head[x];i;i=table[i].next) if(table[i].to!=from) Tree_DP(table[i].to,x); static int stack[M];int top=0; for(i=head[x];i;i=table[i].next) if(table[i].to!=from) { f[table[i].to]+=2; g[table[i].to]=max(g[table[i].to]+1,f[table[i].to]); stack[++top]=table[i].to; } sort(stack+1,stack+top+1,Compare); g[x]=a[x]; for(i=1;i<=top;i++) { g[x]=max(g[x],f[x]+g[stack[i]]); f[x]+=f[stack[i]]; }}int main{ int i,x,y; cin>>n; for(i=1;i<=n;i++) scanf(“%d”,&a[i]); for(i=1;i

篇11:Powerbuilder中树形视图的实现与应用

Powerbuilder中树形视图的实现与应用

中国人民银行黄山市中心支行    杨新平  周咏梅摘  要:本文分析了Powerbuilder中树形视图的结构和特点,结合树的数据结构及其存储和遍历方法,说明了树形视图的构造方法,指出其中的注意事项,并给出程序实例。关键词:树形视图  Powerbuilder  构造  应用    树形视图控件最适合显示具有层次关系的数据,在Windows 95中文件和文件夹(子目录)之间的关系就是用树形视图来表现的。在数据库中,树形视图是管理大量数据的好方法,因为用户只需简单地点击鼠标就可以选择自己需要的数据。     当我们对数据的表现有以下要求时,我们可首先考虑使用树形视图控件:     * 显示层次结构中元素之间的关系;     * 元素在层次结构之间漫游(元素间的拷贝、移动等);     * 描述每个元素相关信息;     * 将大量数据检索的`过程划分为若干步骤,只表现其中需要的部分。     在Powerbuilder中,对树形视图的编程是窗口中较为复杂的部分,它无法像数据窗口那样使用一条Retrieve()函数就可以将数据表现出来。下面我们结合树的数据结构及其存储和遍历,探讨一下树形视图的构建和应用。 1.  树的数据结构及其存储结构    树是一种常见的非线性的数据结构,使用非常广泛。一般人们用孩子表示法、孩子兄弟表示法(二叉树表示法)和双亲表示法来存贮一棵树。其中前两种表示法或因各结点不同构或冗余度太大,或因存贮量太大而不适合在PowerBuilder中应用,而数据库中表的结构和特性正与树的双亲结点表示法的要求相符合,因而最好是采用双亲节点表示法。    树的双亲节点表示法利用了每个节点(除根节点外)只有唯一的双亲的性质,每个结点的结构分为两个域,即Data域和Link域。Data域用以存储本节点的有关信息,Link域为指向双亲节点的指针。 2.数据库中表的设置为了便于说明问题,我们以商品传销网为例,传销网中每个人都对应到树中的一个节点。我们把有关数据存储在表Persons中。根据树的双亲节点表示法的特点,同时考虑到便于查询,将Data域分成本人代号(code)和本人姓名(name)两个字段,而Link域对应到上线代号字段(pcode)。虽然在关系型数据库中,数据的操作是以集合为基础的,而集合中的元素是没有顺序的,但在构建树形视图时必须一个一个地将节点添加进去,且PowerBuilder不支持指针型变量,因而我们在表Persons中增加一字段Handno,记录每个结点的句柄,配合Pcode字段,以实现“指针”的功能,其原理是:通过查找本结点的上线代号来查找其双亲结点的句柄号。由于树形视图等级结构非常明显,我们采用按层次遍历树,所以我们在Persons表中再增加一个字段Grade,便于按层次顺序构建树形视图。表Persons的结构如下表,主键为code列。当然可在表中设置一个或多个字段,以存储各结点的其他信息,但本文旨在说明问题,故不予考虑。

篇12:BZOJ 4027 HEOI 兔子与樱花 树形贪心

题目大意:给定一棵有根树,每个点上有一些樱花,现在要求删除一些节点,删除节点的樱花和子节点都会连到父节点上,要求每个节点的樱花数+子节点数不超过m,求最多删多少个节点

这数据范围也只能贪心了吧= =

fi为以节点i为根的子树中能删除的最多节点(i节点不删),gi为删除最多节点的情况下i号节点的最小负重

那么首先对于每个节点我们对于所有的子节点为根的子树尽量删,然后考虑如何删除子节点

对于节点x以及x的子节点y,若删除y节点,对gx的贡献为gy?1

因此我们对x节点的所有子节点按gy?1排序,从小到大取即可

为什么这是对的呢?

我们考虑一棵子树对父节点的影响只有删除子树的根时根上的东西会被塞到父节点上去

那么一棵子树如果删的不是最多,那么能产生的好处只有删除根时塞到父亲节点上的东西少一些

这样做的最终收益只有【根节点由不可删变为可删】

结果我还莫不如不删根节点,然后让子树中多删一些呢= =

因此贪心是对的,

#include#include#include#include #define M 002using namespace std;struct abcd{ int to,next;}table[M];int head[M],tot;int n,m;int a[M],f[M],g[M];bool not_root[M];void Add(int x,int y){ table[++tot].to=y; table[tot].next=head[x]; head[x]=tot;}void Tree_Greedy(int x){ int i,top=0; for(i=head[x];i;i=table[i].next) { Tree_Greedy(table[i].to); f[x]+=f[table[i].to]; g[x]++; } static int stack[M]; g[x]+=a[x]; for(i=head[x];i;i=table[i].next) stack[++top]=g[table[i].to]-1; sort(stack+1,stack+top+1); for(i=1;i<=top;i++) if(g[x]+stack[i]<=m)f[x]++,g[x]+=stack[i]; elsebreak;}int main{ int i,j,k,x; cin>>n>>m; for(i=1;i<=n;i++) scanf(“%d”,&a[i]); for(i=1;i<=n;i++) { scanf(“%d”,&k); for(j=1;j<=k;j++) {scanf(“%d”,&x);Add(i,++x);not_root[x]=true; } } for(i=1;i<=n;i++) if(!not_root[i]) {Tree_Greedy(i);cout<

篇13:php简单实现无限分类树形列表的方法

作者:八大山人 字体:[增加 减小] 类型:

$items = array( 1 =>array(‘id‘ =>1, ‘pid‘ =>0, ‘name‘ =>‘江西省‘), 2 =>array(‘id‘ =>2, ‘pid‘ =>0, ‘name‘ =>‘黑龙江省‘), 3 =>array(‘id‘ =>3, ‘pid‘ =>1, ‘name‘ =>‘南昌市‘), 4 =>array(‘id‘ =>4, ‘pid‘ =>2, ‘name‘ =>‘哈尔滨市‘), 5 =>array(‘id‘ =>5, ‘pid‘ =>2, ‘name‘ =>‘鸡西市‘), 6 =>array(‘id‘ =>6, ‘pid‘ =>4, ‘name‘ =>‘香坊区‘), 7 =>array(‘id‘ =>7, ‘pid‘ =>4, ‘name‘ =>‘南岗区‘), 8 =>array(‘id‘ =>8, ‘pid‘ =>6, ‘name‘ =>‘和兴路‘), 9 =>array(‘id‘ =>9, ‘pid‘ =>7, ‘name‘ =>‘西大直街‘), 10 =>array(‘id‘ =>10, ‘pid‘ =>8, ‘name‘ =>‘东北林业大学‘), 11 =>array(‘id‘ =>11, ‘pid‘ =>9, ‘name‘ =>‘哈尔滨工业大学‘), 12 =>array(‘id‘ =>12, ‘pid‘ =>8, ‘name‘ =>‘哈尔滨师范大学‘), 13 =>array(‘id‘ =>13, ‘pid‘ =>1, ‘name‘ =>‘赣州市‘), 14 =>array(‘id‘ =>14, ‘pid‘ =>13, ‘name‘ =>‘赣县‘), 15 =>array(‘id‘ =>15, ‘pid‘ =>13, ‘name‘ =>‘于都县‘), 16 =>array(‘id‘ =>16, ‘pid‘ =>14, ‘name‘ =>‘茅店镇‘), 17 =>array(‘id‘ =>17, ‘pid‘ =>14, ‘name‘ =>‘大田乡‘), 18 =>array(‘id‘ =>18, ‘pid‘ =>16, ‘name‘ =>‘义源村‘), 19 =>array(‘id‘ =>19, ‘pid‘ =>16, ‘name‘ =>‘上坝村‘), 20 =>array(‘id‘ =>20, ‘pid‘ =>0, ‘name‘ =>‘广东省‘), 21 =>array(‘id‘ =>21, ‘pid‘ =>20, ‘name‘ =>‘广州市‘),); $t = array(); foreach ($items as $id =>$item) { if ($item[‘pid‘]) { $items[$item[‘pid‘]][$item[‘id‘]] = &$items[$item[‘id‘]]; $t[] = $id; } } foreach($t as $u) { unset($items[$u]); } echo “

希望本文所述对大家的php程序设计有所帮助,

篇14:POJ 2342 Anniversary party (树形dp 入门题)

Anniversary partyTime Limit:1000MSMemory Limit:65536KTotal Submissions:4810Accepted:2724

Description

There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the supervisor relation forms a tree rooted at the rector V. E. Tretyakov. In order to make the party funny for every one, the rector does not want both an employee and his or her immediate supervisor to be present. The personnel office has evaluated conviviality of each employee, so everyone has some number (rating) attached to him or her. Your task is to make a list of guests with the maximal possible sum of guests' conviviality ratings.

Input

Employees are numbered from 1 to N. A first line of input contains a number N. 1 <= N <= 6 000. Each of the subsequent N lines contains the conviviality rating of the corresponding employee. Conviviality rating is an integer number in a range from -128 to 127. After that go N – 1 lines that describe a supervisor relation tree. Each line of the tree specification has the form.:

L K

It means that the K-th employee is an immediate supervisor of the L-th employee. Input is ended with the line

0 0

Output

Output should contain the maximal sum of guests' ratings.

Sample Input

711111111 32 36 47 44 53 50 0

Sample Output

5

Source

Ural State University Internal Contest October'2000 Students Session

题目链接:poj.org/problem?id=2342

题目大意:一棵树,每个节点有一个值,现在要从中选一些点,要求这些点值和最大并且每对儿子和父亲不能同时被选

题目分析:dp[i][0]和dp[i][1]分别表示不选和选第i个点时以i为子树根时子树值的和,则:

dp[fa[i]][1] += dp[i][0] 表示选i的父亲时,其值等于自身值加上不选i时的值

dp[fa[i]][0] += max(dp[i][1], dp[i][0]) 表示不选父亲时,则其值等于其儿子被选或没被选的值的最大值

#include#include#include#include using namespace std;int const MAX = 6005;int dp[MAX][2], val[MAX];bool vis[MAX], flag[MAX];vectorvt[MAX];void DFS(int fa){ vis[fa] = true; dp[fa][1] = val[fa]; int sz = vt[fa].size(); for(int i = 0; i < sz; i++) { int son = vt[fa][i]; if(!vis[son]) {DFS(son);dp[fa][1] += dp[son][0];dp[fa][0] += max(dp[son][1], dp[son][0]); } } return;}int main(){ int n; while(scanf(”%d“, &n) && n) { for(int i = 1; i <= n; i++)vt[i].clear(); memset(flag, false, sizeof(flag)); memset(vis, false, sizeof(vis)); memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n; i++)scanf(”%d“, &val[i]); for(int i = 0; i < n - 1; i++) {int a, b;scanf(”%d %d“, &a, &b);vt[b].push_back(a);flag[a] = true; } int root; for(int i = 1; i <= n; i++) //n个点n-1条边,必然存在“入度”为0的点即树根 {if(!flag[i]){ root = i; break;} } DFS(root); printf(”%d\n", max(dp[root][1], dp[root][0])); }}

树形住房作文

树形聚合物及功能化结构设计研究新进展

个人简历大赛

厨艺大赛

古诗词大赛

放风筝 大赛

大赛发言稿

征文大赛

大赛策划书

大赛闭幕词

《树形大赛范文(精选14篇).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

点击下载本文文档