Redian新闻
>
question about changing return ticket for CA
avatar
question about changing return ticket for CA# Reunion - 探亲与陪读
g*y
1
November 02
总结下最近几天看到的一些很有趣的题目
题目1. LIS. 一个任意的数组,找出一个严格单调递增的最长子序列。
例如: {3,0,1,7,2,4,5,9} –> output: {0, 1, 2, 4, 5, 9}
很简洁巧妙的算法,能在O(N log N)时间和O(N)空间做出来!方法就是始终保持一个单
增的序列,然后新来的数如果比当前最大还大就append在后面,否则在单增序列里面做
binary search,替换相应位置的数。
题目2. 玻璃杯/鸡蛋drop问题。有N层楼,假定是在 i 层楼扔鸡蛋,如果没有碎,那么
在所有<=i 楼层扔鸡蛋都保证不会碎,反之如果碎了,那么保证在所有 >=i 楼层扔鸡
蛋都必碎。通过若干次尝试扔鸡蛋,找到某个鸡蛋碎/不碎的”临界”层。允许你扔鸡
蛋的总次数是D,允许你打碎的鸡蛋数是B。
问题的描述是:对一组给定的数(N D B),如果存在一个策略保证能在D B的限制下,
在N层楼中找到“临界”层,那么称此(N D B)是Solvable的。接下来相关联的三个问题
就是:
(a)给定D,B,求满足(N,D,B)Solvable
avatar
b*e
2
请问版上有经验人士
- 票是在一第三方网站上买的. 经过他们改还要再多收一道手续费.
我可以直接电话国航改吗?
- 回程是旺季改淡季,会退差价吗?
- 国航收多少费?
谢谢!!!
avatar
m*f
3
以下转载
首先考虑某一个N!(N < 10),我们先将所有5的倍数提出来,用1代替原来5的倍数的位
置。由于5的倍数全被提走了,所以这样就不会出现尾数0了。我们先把0..9的阶乘的尾
数列出来(注意,5的倍数的位置上是1),可以得到table[0..9] = (1, 1, 2, 6, 4,
4, 4, 8, 4, 6)。对于N < 5,直接输出table[N]即可;对于N > = 5,由于提出了一个
5,因此需要一个2与之配成10,即将尾数除以2。注意到除了0 !和1!,阶乘的最后一个
非零数字必为偶数(显然,因为在N!的质因数里2的个数要多),所以有一个很特别的
除法规律:2 / 2 = 6,4 / 2 = 2,6 / 2 = 8,8 / 2 = 4。比较特殊的就是2 / 2 =
12 / 2 = 6, 6 / 2 = 16 / 2 = 8。这样我们就可以得到如下式子:
代码:
table[N]
F(N) = ------------ (0 <= N < 10)
2^([N/5])
再考虑复杂的。考虑某一个N!(N >= 10),我们先将所
avatar
b*e
4
avatar
m*f
5
其实这种题现在考的不太多, 虽说math problem但我觉得也就是brain teaser...
avatar
r*u
6
第一题能不能再解释一下?
e.g., 0,1,7,8,2,3,4,5
在2之前都是append,seq=0,1,7,8,在2时怎么办?保留0,1,2还是0,1,7,8?

【在 g*******y 的大作中提到】
: November 02
: 总结下最近几天看到的一些很有趣的题目
: 题目1. LIS. 一个任意的数组,找出一个严格单调递增的最长子序列。
: 例如: {3,0,1,7,2,4,5,9} –> output: {0, 1, 2, 4, 5, 9}
: 很简洁巧妙的算法,能在O(N log N)时间和O(N)空间做出来!方法就是始终保持一个单
: 增的序列,然后新来的数如果比当前最大还大就append在后面,否则在单增序列里面做
: binary search,替换相应位置的数。
: 题目2. 玻璃杯/鸡蛋drop问题。有N层楼,假定是在 i 层楼扔鸡蛋,如果没有碎,那么
: 在所有<=i 楼层扔鸡蛋都保证不会碎,反之如果碎了,那么保证在所有 >=i 楼层扔鸡
: 蛋都必碎。通过若干次尝试扔鸡蛋,找到某个鸡蛋碎/不碎的”临界”层。允许你扔鸡

avatar
S*A
7
到2时,找到递增数列里比2大的最小的那个数,这里就是7,用2替换7
到3时,只有8比3大,用3替换8,以此类推

【在 r**u 的大作中提到】
: 第一题能不能再解释一下?
: e.g., 0,1,7,8,2,3,4,5
: 在2之前都是append,seq=0,1,7,8,在2时怎么办?保留0,1,2还是0,1,7,8?

avatar
r*o
8
那没用到binary search啊?

【在 S******A 的大作中提到】
: 到2时,找到递增数列里比2大的最小的那个数,这里就是7,用2替换7
: 到3时,只有8比3大,用3替换8,以此类推

avatar
S*A
9
2找7时用 既然那个序列是严格递增的,为啥不用binary search 否则一个个找又变
成O(n)了

【在 r****o 的大作中提到】
: 那没用到binary search啊?
avatar
r*o
10
明白了,呵呵。

【在 S******A 的大作中提到】
: 2找7时用 既然那个序列是严格递增的,为啥不用binary search 否则一个个找又变
: 成O(n)了

avatar
g*u
11
第四题怎么用binary search?
avatar
x*3
13
第四题怎么解
avatar
J*e
16
好像不对吧,2->7,这时候最后的8是要去掉还是不要?

【在 S******A 的大作中提到】
: 到2时,找到递增数列里比2大的最小的那个数,这里就是7,用2替换7
: 到3时,只有8比3大,用3替换8,以此类推

avatar
w*e
17
这个算法有问题 5的倍数恐怕不能简单变成1
比如2x10和2x15得到的尾数应该是不一样的
但是用这个算法得到的结果是一样的
我觉得这个问题恐怕没有logN的算法 NlogN倒是有一个

,
=

【在 m*****f 的大作中提到】
: 以下转载
: 首先考虑某一个N!(N < 10),我们先将所有5的倍数提出来,用1代替原来5的倍数的位
: 置。由于5的倍数全被提走了,所以这样就不会出现尾数0了。我们先把0..9的阶乘的尾
: 数列出来(注意,5的倍数的位置上是1),可以得到table[0..9] = (1, 1, 2, 6, 4,
: 4, 4, 8, 4, 6)。对于N < 5,直接输出table[N]即可;对于N > = 5,由于提出了一个
: 5,因此需要一个2与之配成10,即将尾数除以2。注意到除了0 !和1!,阶乘的最后一个
: 非零数字必为偶数(显然,因为在N!的质因数里2的个数要多),所以有一个很特别的
: 除法规律:2 / 2 = 6,4 / 2 = 2,6 / 2 = 8,8 / 2 = 4。比较特殊的就是2 / 2 =
: 12 / 2 = 6, 6 / 2 = 16 / 2 = 8。这样我们就可以得到如下式子:
: 代码:

avatar
f*6
18

突然想到,如果array是{1,2,3,5,6,4}
那么碰到4的时候,应该用4替代5?这样不就成了1,2,3,4,6? 最后的输出是什么呢?

【在 S******A 的大作中提到】
: 到2时,找到递增数列里比2大的最小的那个数,这里就是7,用2替换7
: 到3时,只有8比3大,用3替换8,以此类推

avatar
l*q
19
考古中ing,同问

【在 f******6 的大作中提到】
:
: 突然想到,如果array是{1,2,3,5,6,4}
: 那么碰到4的时候,应该用4替代5?这样不就成了1,2,3,4,6? 最后的输出是什么呢?

avatar
s*n
20
弱问下,楼主的blog链接 ?

【在 g*******y 的大作中提到】
: November 02
: 总结下最近几天看到的一些很有趣的题目
: 题目1. LIS. 一个任意的数组,找出一个严格单调递增的最长子序列。
: 例如: {3,0,1,7,2,4,5,9} –> output: {0, 1, 2, 4, 5, 9}
: 很简洁巧妙的算法,能在O(N log N)时间和O(N)空间做出来!方法就是始终保持一个单
: 增的序列,然后新来的数如果比当前最大还大就append在后面,否则在单增序列里面做
: binary search,替换相应位置的数。
: 题目2. 玻璃杯/鸡蛋drop问题。有N层楼,假定是在 i 层楼扔鸡蛋,如果没有碎,那么
: 在所有<=i 楼层扔鸡蛋都保证不会碎,反之如果碎了,那么保证在所有 >=i 楼层扔鸡
: 蛋都必碎。通过若干次尝试扔鸡蛋,找到某个鸡蛋碎/不碎的”临界”层。允许你扔鸡

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。