2020HNCPC赛后总结 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

2020HNCPC赛后总结

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:88

哎,从大一下学期末开始正式打ACM,到现在大三了。今年就A了6题拿了二等。C题真的就是差一点功力。没想到预处理O(1)判组合数奇偶性,套Lucas定理又超时。然后就因此错别金。

现在想起来真的是没办法。很无力。确实ACM是三个人打的游戏,我们有个天赋很好的选手可惜不喜欢刷题。。。能够有非常巧妙的灵感。但是到底刷题量不够还是不行。没办法,一个人再怎么努力也是行不通的。

其实也挺无语的,这次叉姐出的题,H,C。一道银牌题,一道金牌题。可惜全是数学题。我准备了那么久dp,那么多数据结构,字符串,图论都没派上用场。说到底还是被数学题给打烂了。还是缺少一点知识面啊。

昨天刚打完,今天人都比较失落吧。。。准备了这么久,到头来还是一个二等。现在只能不停的安慰自己,人生不是完美的,没有什么人的一生是一帆风顺的。现在都不知道怎么去面对接下来的事情了。一下觉得心里落空很多…

哎,上面讲的比较乱,现在来讲一下如何预处理O(1)的判组合数奇偶性。

方法一:

关键点:一个数是偶数,则必定存在至少一个素因子2.

那么考虑到 C ( n , m ) = n ! m ! ? ( n ? m ) ! C(n,m)=\frac{n!}{m!*(n-m)!} C(n,m)=m!?(n?m)!n!?

现在就是求阶乘中因子2的个数,这个就是 ∑ i = 1 l o g i x ? x 2 i ? ? i \sum_{i=1}^{log_ix}\lfloor\frac{x}{2^i}\rfloor * i i=1logi?x??2ix???i

所以可以预处理1到1e6的阶乘中因数2的个数。 O ( n l o g n ) O(nlogn) O(nlogn)

然后根据组合数的阶乘表示方法,我们可以 O ( 1 ) O(1) O(1)的判断分子的因子2的个数,以及分母的因子2的个数.判断大小关系即可.

方法二:

结论: C ( n , k ) C(n,k) C(n,k),当 n & k = k n \& k = k n&k=k时,组合数是奇数,否则是偶数.

相关案例查看更多