简单习题的复杂化经历

本文将展现博主的下饭操作,可能长期更新。

1

fn=i1(ni)(1)i11i

=i1(ni)(1)i01xi1dx=01(1x)n1xdx

=01tn1t1dt=(i=1ntii)|01=(i=1n(1x)ii)|10

=i=1n1i

调和数的出现不禁让人思考有没有更简单的做法。
观察 fnfn1 固然是可以的,但是不容易在直觉中出现。试图使用吸收公式,从而拆 (ni)=(n1i1)+(n1i) 也是合理的,但是推到一半就 会发现和差分方法殊途同归。当然,上述两种方法都可以看成有限微积分更为初等的应用形式。
组合意义显然也是可以的,但是只能用于证明,用于化简的话我好像不能仅根据左式编造出适合的组合意义……
GF 卷积的角度想,可能会考虑二项卷积和 EGF。但是我并不会表示调和数的 EGF。如果考虑 OGF 卷积,应该是 [xn](1+x)nln(1+x)=[xn]ln(1x)1x,不是两个相等的 GF,而仅仅是某一项相等,或许从拉反考虑是可以证明的,但即使可以,也未免过于复杂了。
GF 复合的角度想,则应该注意 (ni)=[xn]xi(1x)i+1,而将原式变为

[xn]i1xi(1x)i+1(1)i11i

=[xn]ln(1+x)(x1x)1x=[xn]ln(11x)1x=Hn

简单的完成了推导,并且是可以从左式正向推出调和数,而不仅仅是证明已知的等式。

2

交互问题。交互库心中有 1,2,3 三数之一,你可以做如下操作:

  1. 询问交互库一个集合 S,交互库会回答它想的数是否在这个集合中。但是,交互库可能在此时说谎,不过保证它不会连续说谎两次。
  2. 回答交互库一个数,交互库会返回这个数是不是它想的数。交互库此时不会说谎,也不会打断上述的连续说谎。

你要在至多 3 次 1 操作,2 次 2 操作之内,使用 2 操作正确回答问题。

时间差基本等于(博主思考这个问题的时间+10min)。
这个问题难住了数学国家队 20min,给出了若干假做法

正确做法

如果 S 是单元集而交互库返回了“在”,则可以通过如下策略完成:询问单元集中的元素。如果不是答案,说明上次说谎,于是获得了一次必定为真的询问机会,容易再用一次 1 操作+一次 2 操作得出答案。
连续询问两次 {1},若都为“不在”则 1 确实不在,分别回答 2,3 即可。否则使用上述策略完成。

posted @   秋叶冬雪  阅读(345)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示