总结 2016.12.10

题目描述
过年了, N 个学生站成一圈,按顺时针方向依次编号为 1 N ,等待他们的糖果。老师按照以下方法来分配糖果:

首先老师给 1 号和 2 号学生各一块糖果,然后他沿着圆圈按照顺时针方向继续分发,跳过一个学生 (3 ) ,给下一个学生 (4 ) 一块糖果;继续行走,跳过 2 个学生 (5 号和 6 ) 给下一个学生 (7 ) 一块糖果,如此反复进行。

问能否保证每个学生都能至少得到一块糖果?
输入
      输入有多组测试数据,每个测试数据是一个正整数 N(2<=N<=1000000000)
输出
     对于每组测试数据输出:“ YES ”或者“ NO
样例输入
2

3

4

样例输出
YES

NO

YES

数据范围限制

题目描述
个人要参加国际象棋比赛,该比赛要进行 K 场对弈。

每个人最多参加两场对弈,最少参加零场对弈。每个人都有一个与其他人都不相同的等级(用一个正整数来表示)。

在对弈中,等级高的人必须用黑色的棋子,等级低的人必须用白色的棋子。

每一个人最多只能用一次黑色的棋子和一次白色的棋子。

为了增加比赛的可观度,观众希望 K 场对弈中双方的等级差的总和最小。

比如有 7 个选手,他们的等级分别是 30, 17, 26, 41, 19, 38, 18 要进行 3 场比赛。最好的安排是 Player 2 vs Player 7, Player7 vs Player 5 , Player 6 vs Player 4 ,此时等级差的总和等于 (18-17) + (19-18) + (41-38) = 5 达到最小。
输入
第一行两个正整数 K

接下来有 行,第 i 行表示第 i . 1 个人等级。
输出
在第一行输出最小的等级差的总和。
样例输入
7 3 

30 

17 

26 

41 

19 

38 

18 

样例输出
5

数据范围限制
提示
【数据范围】

90% 的数据中,  N   3000

100% 的数据中,  N   100000

保证所以输入数据中等级的值小于 108   K   N-1
题目描述
给一个正整数 X ,一个长度为 m X- 因子链是指这样一个序列: X0=1 X1 X2 ,。。。, Xm=X 满足: Xi<Xi+1 同时 Xi|Xi+1(Xi+1 能被 Xi 整除 )

要求 X- 因子链的最大长度 Len 和长度为 Len X- 因子链的数量。
输入
      一个正整数 X(X <231)
输出
      一行,两个整数,分别表示最大长度和该长度链的种数。
样例输入
100

样例输出
4 6

数据范围限制
题目描述
在众多的数据结构中,二叉树是一种特殊而重要的结构,有着广泛的应用。二叉树或者是一个节点,或者有且仅有一个节点位二叉树的根,其余节点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集。每个子集又是一个二叉树。

遍历一棵二叉树就是按某条搜索路径巡访其中每个节点,使得每个节点均被访问一次,而且仅被访问一次。最常用的有三种遍历方式:

1 )前序遍历:若二叉树为空,则空操作;否则先访问根节点,接着前序遍历左子树,最后前序遍历右子树。

2 )中序遍历:若二叉树为空,则空操作;否则先中序遍历左子树,接着访问根节点,最后再中序遍历右子树。

3 )后序遍历:若二叉树为空,则空操作;否则先后序遍历左子树,接着后序遍历右子树,最后再访问根节点。


例如图 1 所示的二叉树前序遍历的顺序是 ABCD ,中序遍历的顺序是 CBAD ,后序遍历的顺序是 CBDA

对一棵二叉树,如果给出前序遍历和中序遍历的节点访问顺序,那么后序遍历的顺序是唯一确定的,也很方便地求出来。但如果现在只知道前序遍历和后序遍历的顺序,中序遍历的顺序是不确定的,例如:前序遍历的顺序是 ABCD ,而后序遍历的顺序是 CBDA ,那么就有两棵二叉树满足这样的顺序,见图 1 和图 2

现在的问题是给定前序遍历和后序遍历的顺序,要求出总共有多少棵不同形态的二叉树满足这样的遍历顺序。
输入
整个输入有两行,第一行给出前序遍历的访问顺序,第二行给出后序遍历的访问顺序。

二叉树的节点用一个大写字母表示,不会有两个节点标上相同字母。输入数据不包含空格,且保证至少有一棵二叉树符合要求。
输出
输出一个整数,为符合要求的不同形态的二叉树的数目。
样例输入
ABCD

CBDA

样例输出
2

数据范围限制





2016.12.10
考试思路:
T1
找规律,得出只要是2的乘方就是可以的,其他都不行,然后就判断一下咯,就可以了。
T2
比赛时一时脑抽,居然没想出正解,打了个爆搜,结果0分。
T3
看懂了题但没有什么想法,直接弃了。
T4
没有什么思路和想法,就打了个表。


正确思路:
T1
同上。
T2
因为对于每个人来说,最接近自己等级的就是排个序之后旁边的嘛,所以给每个人等级排个序,算出相邻两个的差,再拿差排个序,累加前k个小的就可以了。
T3
就是算出x的质因数的每种元素有多少个,然后看看全排列的总方案数,对于样例100来说,质因数里就有两个2和两个5,质因数总数是4个,然后利用排列公式ans=4!/2!/2!。
T4
就很简单嘛,在前序遍历那里两个两个的倒过来,再看看后序遍历那有没有一样的,有就答案乘2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值