noip2003提高组题解

Posted 不明嚼栗的园子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了noip2003提高组题解相关的知识,希望对你有一定的参考价值。

T1.神经网络

给出n个点,m条有向边,i到j的边权为Wij,每个无入边的点有ci的活力,其他点为零,每个点有一个ui。对于出发点而言,ui没有什么卵用,它会向所有指向的店发送强度ci的信号,接收的点的活力值为:  然后求无出边的点的活力值。

只要理清拓扑结构即可。先将出发点入队,然后依次将下一层的访问到入队。显然,访问到下一层的节点前,当前层的信号都已经发送完了。这样只要把出边为零的点依次输出就好了。

 

T2.侦探推理

给出m个人,n个人说假话,给出p句证词,只有一下几种有用:

 

然后,输入的格式大约是这样的:

3 1 5

MIKE

CHARLES

KATE

MIKE:I am guilty.

MIKE:Today is Sunday.

CHARLES:MIKE is guilty.

KATE:I am guilty.

KATE:How are you??

然后要求出谁是罪犯。。。如果不能判断输出Impossible,可能有多个位Cannot Determine

这是很烦的搜索题。。。我的搜法是,先dfs出说谎的n个人,然后按证词一句句判断每句话是否矛盾。。这样只要看能不能有一种情况使得能判断出只有一个罪犯即可。。或者判断出的都是多个罪犯。。。或者不成立。字符串处理的时候还是有点烦的。。。可以先处理几个模板串。。。(自己测和老师电脑测都能过。。然而oj就是WA)

 

T3.加分二叉树

给出n个节点的分值,要组成一棵中序遍历为(1~n)的树,没棵子树的加分值定义为根节点的左右子树加分值之积加上根节点的分。求最大加分值的树的分数和前序遍历

只要f[i][j]表示[i,j]的最大分值,root[i][j]表示取到最大值时的根。。

显然只要f[i][j]=max(f[i][k-1]*f[k+1][j]+a[k])即可。

 

T4.传染病控制

给你n个点构成一棵以1节点为根的数。每个周期可以切断其中一条边,然后每个上一层的有病的节点会感染下一层能连到的节点。求切断后能得到的最少感染人数。

按层数先建树,然后对于每一层,先枚举当前节点能否连接到根节点(路径是否已经被切断),然后只要把当前能扩展的节点扩展掉然后处理下一层就好了。。。复杂度居然也是够的。。。。【懵】

以上是关于noip2003提高组题解的主要内容,如果未能解决你的问题,请参考以下文章

NOIP2003提高组

水王争霸(2003noip提高组)

NOIP提高组2004 合并果子题解

NOIP2007 提高组 题解

[NOIP2003] 提高组 洛谷P1040 加分二叉树

P1025 [NOIP2001 提高组] 数的划分题解