SRM 495

本文解析了SRM495中的三道题目:CarrotBoxesEasy、ColorfulCards和HexagonPuzzle,提供了详细的算法思路及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新年了,小虾米想踏踏实实地提高算法,看了最近的SRM495,试着做了几题

 

CarrotBoxesEasy

如果为了节省时间,可以写个最简实现,每次找一个符合条件的数减一,重复k次就好。但是实际练习,还是想能写个效率好些的,多省掉些循环,想法是每次找出最大和次大的数m1和m2,并统计m1有多少个dup,然后比较k和(m1-m2)*dup,如果K小,则最后位置就从这些m1中产生,如果k大,则k=k-(m1-m2)*dup,并将所有m1“削”为m2,继续下一次迭代,直到K小并找到最后位置。

 

 

ColorfulCards

从左向右找出第一个匹配的子串,然后再从右向左找出第一个匹配的子串,然后检查两个子串的各位,如果不同就为-1,相同就为该数。

 

HexagonPuzzle

通过分析发现其中有个规律:如果符合条件的六边形个数为n>3,则其将产生P(n,n-2)种排列情况【即n*(n-1)*...*3】,简单证明如下:如果n=3,则有3种排列;如果n=4,先固定第4个token,其余3个依然是3种排列,然后从3个token中任选一个与固定token置换,得到额外的3*P(3,1)种情况,总计P(3,1)+3*P(3,1)=P(4,2);如果n=5,类似的固定第5个token,得到P(4,2),再置换得到新的4*P(4,2)种情况,总计得P(4,2)+4*P(4,2)=P(5,3);类推得P(n,n-2)。然后问题变成找出图中各个符合条件的各个连通图,计算其排列情况数,根据排列组合的乘法原理,将它们相乘并对1000000007取模即得结果。

 

DIV1中的两个高分题,还没有想明白,也许要去看网上高手们的解题报告了。继续努力,恩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值