楼主: mayoku
12115 104

[其它] 请教一个数学问题 悬赏 [推广有奖]

21
nepter 发表于 2010-4-11 21:49:52
17# kudosiyin

没看明白,但肯定是有问题的,如果b很小,找不到比2b/n小的ci,怎么办?

22
renminyiyuan 发表于 2010-4-11 22:24:12
我觉得这样如何:
首先按从小到大次序对A排序,
(1)在A序列中选一个分段点ai,从ai到an项求和,并求其均值Ra;
(2)用Ra分别减去a1至ai-1项,得到差值序列[d1,d2,...di-1],满足d1+d2+...+di-1=b;
以上两个条件构建方程组,可以编程求解;
最终[a1+b1,a2+b2,...,ai-1 +bi-1]各项均等于Ra,对标准差贡献为0,而只剩[ai,ai+1,...an]项.
已有 1 人评分学术水平 热心指数 收起 理由
tangsanzang007 + 1 + 1 我很赞同

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

爱党,爱国,爱民

23
kudosiyin 发表于 2010-4-11 22:29:08
22# renminyiyuan

这样可以,和我的那个算法类似~

24
kudosiyin 发表于 2010-4-11 22:31:51
21# nepter
ai的均值是b/n,最小的ai必定≤b/n<2b/n,而ci事实上也就是ai排序之后的数列,当然会有比2b/n小的存在

25
nepter 发表于 2010-4-11 22:39:43
22# renminyiyuan

显然是有问题的,怎么可能凑出来d1+d2+...+di-1=b; 很有可能是ai使d1+d2+...+di-1<b,而ai+1使d1+d2+...+di-1>b.
已有 1 人评分学术水平 热心指数 收起 理由
renminyiyuan + 1 + 1 好的意见建议

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

26
nepter 发表于 2010-4-11 22:40:34
24# kudosiyin

ai的均值是b/n? 那更让人看不懂了。。。

27
renminyiyuan 发表于 2010-4-11 22:53:44
nepter 发表于 2010-4-11 22:39
22# renminyiyuan

显然是有问题的,怎么可能凑出来d1+d2+...+di-1=b; 很有可能是ai使d1+d2+...+di-1b.
很有道理,可以改为取整相等,本来就是个近似逼近的问题.
爱党,爱国,爱民

28
nepter 发表于 2010-4-11 23:07:28
27# renminyiyuan

其实你那个Ra就是(sum(ai)+b)/n,和我结论完全不一样,我坚信我的是对的,那我就要反驳你啦,不好意思。公式实在太难打了,我就直接举例了。
比如,a={1,2,1000},b=3
你的结论是???你的算法得不出来

29
zerson 发表于 2010-4-11 23:21:36
没想到更简便的方法。我来给个算法吧,用Excel很容易实现:

1.将a1...an排序,不妨现在a1,...an已经是从小到大排列好的数列;
2.计算a2-a1,a3-a2,...,an-a_n-1;
3.计算数列(a2-a1)*1,(a3-a2)*2,...(am-ai)*i,...,(an-a_(n-1))*(n-1);
4.上面数列的累加数列Si,即Si=(a2-a1)*1+(a3-a2)*2+(am-ai)*i;
5.如果累加数列Si中的第k个小于b,第k+1个大于b,则将a1,...an中前k个数列统一补为ak即可;即
6.b1=ak-a1,b2=ak-a2,...,b_(k-1)=ak-a_(k-1);
7.此时b-(b1+...+bk)一定小于等于(a_(k+1)-ak)*k,若b除以k等于x余数y,再将b1,...,bk各加x并任选y个加1即可。
已有 3 人评分学术水平 热心指数 信用等级 收起 理由
mayoku + 1 原理都一样啊
renminyiyuan + 1 + 1 好的意见建议
nepter + 1 + 1 + 1 我很赞同

总评分: 学术水平 + 3  热心指数 + 2  信用等级 + 1   查看全部评分

30
nepter 发表于 2010-4-11 23:31:53
29# zerson

正确,一些细节改下,比如(an-a_n-1)*(n-1)

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-26 19:05