由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 周末上道小题
相关主题
Amazon interview question.(3)请教2道面试题
周末上道小题吧anagram的请教题目 在一组数中找到最大子集乘积
请教一个题目Bloomberg FSD Intern 面经
请教一下subset I 输出子集顺序问题问一道概率题
Binary Tree Maximum Path Sum非递归的怎么写我也来贡献几个面试题
问个算法题,修改版Facebook 电面
请问一个sql的问题关于n个数的所有和的一个问题
问个关于set的题请教一个问题
相关话题的讨论汇总
话题: 元素话题: sum话题: s2话题: s1话题: 操作
进入JobHunting版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
有一个整数数组,你可以进行一种操作
取两个元素, A[i], A[j], 进行A[i]++, A[j]--
你可以进行无限次这种操作
问题是,经过你的操作以后,你可以得到的最大数目的元素,使得他们的值相等。
比如
2 1
无论你怎么操作,最大元素数都是 1
1 4 1
最大元素数可以到3
1++
4--
2 3 1
3--
1++
2 2 2
b***m
发帖数: 5987
2
题意写得不清晰……
p*****2
发帖数: 21240
3

看例子。

【在 b***m 的大作中提到】
: 题意写得不清晰……
b***m
发帖数: 5987
4
我能看懂。“元素”这个词很让人迷惑啊。
l*****a
发帖数: 14598
5
才周三
不知道这个周末得上多少道

【在 p*****2 的大作中提到】
: 有一个整数数组,你可以进行一种操作
: 取两个元素, A[i], A[j], 进行A[i]++, A[j]--
: 你可以进行无限次这种操作
: 问题是,经过你的操作以后,你可以得到的最大数目的元素,使得他们的值相等。
: 比如
: 2 1
: 无论你怎么操作,最大元素数都是 1
: 1 4 1
: 最大元素数可以到3
: 1++

p*****2
发帖数: 21240
6

数组中每一个不是叫元素吗?

【在 b***m 的大作中提到】
: 我能看懂。“元素”这个词很让人迷惑啊。
p*****2
发帖数: 21240
7

每天三题?

【在 l*****a 的大作中提到】
: 才周三
: 不知道这个周末得上多少道

b***m
发帖数: 5987
8
任意数组?
p*****2
发帖数: 21240
9

任意的。

【在 b***m 的大作中提到】
: 任意数组?
l*********8
发帖数: 4642
10
难道是这样?
int pk2(vector & A)
{
int reminder = std::accumulate(A.begin(), A.end(), 0) % A.size();
return max(A.size()-1, A.size()-reminder);
}

【在 p*****2 的大作中提到】
: 有一个整数数组,你可以进行一种操作
: 取两个元素, A[i], A[j], 进行A[i]++, A[j]--
: 你可以进行无限次这种操作
: 问题是,经过你的操作以后,你可以得到的最大数目的元素,使得他们的值相等。
: 比如
: 2 1
: 无论你怎么操作,最大元素数都是 1
: 1 4 1
: 最大元素数可以到3
: 1++

相关主题
问个算法题,修改版请教2道面试题
请问一个sql的问题请教题目 在一组数中找到最大子集乘积
问个关于set的题Bloomberg FSD Intern 面经
进入JobHunting版参与讨论
b***m
发帖数: 5987
11
这种题俺不擅长……
Q*******e
发帖数: 939
12
看懂了
这种题目有实际应用么
p*****2
发帖数: 21240
13

竞赛题, 属于greedy, math

【在 Q*******e 的大作中提到】
: 看懂了
: 这种题目有实际应用么

l*******b
发帖数: 2586
14
难道不能盯着一个A[0] 和所有其他的A[i]做一遍,得到除了A[0]以外其他都一样大?
然后应该有简单判别法确定是不是能让A[0]也一样吧
l*******b
发帖数: 2586
15
对,求和看能不能被元素个数整除就可以了吧

【在 l*******b 的大作中提到】
: 难道不能盯着一个A[0] 和所有其他的A[i]做一遍,得到除了A[0]以外其他都一样大?
: 然后应该有简单判别法确定是不是能让A[0]也一样吧

b****e
发帖数: 45
16
对每个subset S, 判断是否符合如下条件:
Sum(S)能被Size(S)整除。
然后找出size最大的那个subset应该就是答案了。
证明过程:
假设最后达成相等的所有元素集合为S,其中的元素值为x. 则S中的元素是由一部分初始
值大于等于X的子集(假设为S1)向剩余初始值小于x的子集(假设为S2)进行"重分配"得
到的。因此这样的集合需满足如下条件:
Sum(S1) - |S1|x = |S2|x - Sum(S2)
即:
x = [Sum(S1) + Sum(S2)] / (|S1| + |S2|) = Sum(S) / |S|
结果为整数即可。

【在 p*****2 的大作中提到】
: 有一个整数数组,你可以进行一种操作
: 取两个元素, A[i], A[j], 进行A[i]++, A[j]--
: 你可以进行无限次这种操作
: 问题是,经过你的操作以后,你可以得到的最大数目的元素,使得他们的值相等。
: 比如
: 2 1
: 无论你怎么操作,最大元素数都是 1
: 1 4 1
: 最大元素数可以到3
: 1++

b****e
发帖数: 45
17
修正一下:根据题目提供的条件,好像结果在N和N-1之间选择就行了,把所有元素加起
来除以元素个数,能整除的话就是N, 否则就是N-1(把第一个元素一直递减直到满足其
他N-1个元素相等就可以了)。

【在 b****e 的大作中提到】
: 对每个subset S, 判断是否符合如下条件:
: Sum(S)能被Size(S)整除。
: 然后找出size最大的那个subset应该就是答案了。
: 证明过程:
: 假设最后达成相等的所有元素集合为S,其中的元素值为x. 则S中的元素是由一部分初始
: 值大于等于X的子集(假设为S1)向剩余初始值小于x的子集(假设为S2)进行"重分配"得
: 到的。因此这样的集合需满足如下条件:
: Sum(S1) - |S1|x = |S2|x - Sum(S2)
: 即:
: x = [Sum(S1) + Sum(S2)] / (|S1| + |S2|) = Sum(S) / |S|

l*********8
发帖数: 4642
18
agree

【在 b****e 的大作中提到】
: 修正一下:根据题目提供的条件,好像结果在N和N-1之间选择就行了,把所有元素加起
: 来除以元素个数,能整除的话就是N, 否则就是N-1(把第一个元素一直递减直到满足其
: 他N-1个元素相等就可以了)。

w***o
发帖数: 109
19
完全同意

【在 b****e 的大作中提到】
: 修正一下:根据题目提供的条件,好像结果在N和N-1之间选择就行了,把所有元素加起
: 来除以元素个数,能整除的话就是N, 否则就是N-1(把第一个元素一直递减直到满足其
: 他N-1个元素相等就可以了)。

p*****2
发帖数: 21240
20

对。

【在 b****e 的大作中提到】
: 修正一下:根据题目提供的条件,好像结果在N和N-1之间选择就行了,把所有元素加起
: 来除以元素个数,能整除的话就是N, 否则就是N-1(把第一个元素一直递减直到满足其
: 他N-1个元素相等就可以了)。

m*****k
发帖数: 731
21
I am curious why nobody agreed after luckynoob. :-)
1 (共1页)
进入JobHunting版参与讨论
相关主题
请教一个问题Binary Tree Maximum Path Sum非递归的怎么写
find subset that sum up to given number问个算法题,修改版
Combination Sum II哪里做错了请问一个sql的问题
问一个C#单链表或双链表集合与子集的问题。问个关于set的题
Amazon interview question.(3)请教2道面试题
周末上道小题吧anagram的请教题目 在一组数中找到最大子集乘积
请教一个题目Bloomberg FSD Intern 面经
请教一下subset I 输出子集顺序问题问一道概率题
相关话题的讨论汇总
话题: 元素话题: sum话题: s2话题: s1话题: 操作