T1:Sleepy Cow Herding
(Herding.cpp/in/out/1s 128M)
Farmer John的三头获奖奶牛Bessie、Elsie和Mildred,总是会迷路走到农场上遥远的地方去!他需要你帮助将她
们一起赶回来。农场的草地大体是一块狭长的区域——我们可以将其想象成一条数轴,奶牛可以占据数轴上的任意
整数位置。这3头奶牛现在正位于不同的整数位置,Farmer John想要移动她们,使得她们占据三个相邻的位置(例
如,位置6、7、8)。不幸的是,奶牛们现在很困,Farmer John要让她们集中精力听从命令移动并不容易。任意时
刻,他只能使得一头处在“端点”(在所有奶牛中位置最小或最大)位置的奶牛移动。当他移动奶牛时,他可以命
令她走到任意一个未被占用的整数位置,只要在新的位置上她不再是一个端点。可以看到随着时间的推移,这样的
移动可以使奶牛们趋向越来越近。请求出使得奶牛们集中到相邻位置所进行的移动次数的最小和最大可能值。
Input
输入包含一行,包括三个空格分隔的整数,为Bessie、Elsie和Mildred的位置。
每个位置均为一个范围1…10^9内的整数。
Output
输出的第一行包含Farmer John需要将奶牛们聚集起来所需进行的最小移动次数。
第二行包含他将奶牛聚集起来能够进行的最大移动次数。
Sample Input
4 7 9
Sample Output
1
2
T2:最大子序列之和
(sum.cpp/in/out 1s 256M)
给定一个数列,找出3个无交集的连续数列使其和最大。
Input
第一行一个数n,表示数列长度。
接下来有n行,每行一个数,第i行为第i个数。
3<= n <= 1000000,答案 < = 2^31 - 1
Output
仅有一个数,表示最大和。
Sample Input
10
-1
2
3
-4
0
1
-6
-1
1
-2
Sample Output
7
T3:倒水
(water.cpp/in/out 1s 128M)
一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子。每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后把
空瓶丢弃。(不能丢弃有水的瓶子)显然在某些情况下CC无法达到目标,比如N=3,K=1。此时CC会重新买一些新的瓶子(新瓶子容量无限,开始时有1升水),以到达目标。现在CC想知道,最少需要买多少新瓶子才能达到目标呢?
Input
一行两个正整数, N,K(1<=N<=10^9,K<=1000)。
Output
一个非负整数,表示最少需要买多少新瓶子。
Sample Input
27 3
Sample Output
1
T4:对称二叉树
(tree.cpp/in/out/3s 256M)
一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树:
二叉树;
将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等。
下图中节点内的数字为权值,节点外的 id 表示节点编号。
现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且节点数最多。请输出这棵子树的节点数。
注意:只有树根的树也是对称二叉树。本题中约定,以节点 T 为子树根的一棵“子树”指的是:节点 T 和它的全部后代节点构成的二叉树。
输入
第一行一个正整数 n,表示给定的树的节点的数目,规定节点编号 1~n,其中节点1 是树根。
第二行 n 个正整数,用一个空格分隔,第 i 个正整数 vi 代表节点 i 的权值。
接下来 n 行,每行两个正整数 li , ri ,分别表示节点 i 的左右孩子的编号。如果不存在左 / 右孩子,则以 −1 表示。两个数之间用一个空格隔开。
输出
输出共一行,包含一个整数,表示给定的树的最大对称二叉子树的节点数。
输入样例 1
2
1 3
2 -1
-1 -1
输入样例 2
10
2 2 5 5 5 5 4 4 2 3
9 10
-1 -1
-1 -1
-1 -1
-1 -1
-1 2
3 4
5 6
-1 -1
7 8
输出样例 1
1
输出样例 2
3
输入输出样例 1 说明
最大的对称二叉子树为以节点 2 为树根的子树,节点数为 1。
输入输出样例 2 说明
最大的对称二叉子树为以节点 7 为树根的子树,节点数为 3。
数据规模与约定
共25个测试点。vi≤1000
测试点1~3,n≤10,保证根结点的左子树的所有节点都没有右孩子,根结点的右子树的所有节点都没有左孩子。
测试点4~8,n≤10。
测试点9~12,n≤10^5,保证输入是一棵“满二叉树”。
测试点13~16,n≤10^5,保证输入是一棵“完全二叉树”。
测试点17~20,n≤10^5,保证输入的树的点权均为 1。
测试点21~25,n≤10^6。