Topcoder SRM 100 场计划

本文详细介绍了多个Topcoder SRM挑战赛的题目,涉及多种算法和解题技巧,如矩阵快速幂、Floyed算法、计数、模拟等。文章强调在解决此类问题时,理解题意、寻找规律、优化状态转移和矩阵乘法等方法的重要性,并提供了具体的解题思路和复杂度分析。
摘要由CSDN通过智能技术生成

SRM 550 Div1 250 按题意模拟,注意判断边界是否被访问时,以后的路径不能算上
SRM 550 Div1 500 一道找规律题,打个表
SRM 550 Div1 1000 矩阵快速幂题,每个位置是该位置需要多少次才能转到目标态,先让他转到目标态的贡献减去之后,剩下就只剩下自己转圈的贡献了,我们发现这样的贡献在每个位置都相同,就可以算出最大旋转次数. 然后状态就是 有多少个需要两步到目标态,多少个一次,多少个0次,这个状态是n^2的,直接转移即可,多开一维记录每次全0的贡献和即可.
这种看上去转移单一的题,主旨是先找到共同点,转化成转移相同的状态.然后合并多余状态,进行矩乘优化.

SRM 551 Div1 250 暴力判断贪心…
SRM 551 Div1 450 Floyed 建图是从i直接到j需要删的最少边数,考虑DP转移不难想到
SRM 551 Div1 1000
一道比较不错的计数题.
首先一个套路 meet in the middle 做出 选出k个sweet 点的和不超过MAX的方案数
这样我们只要求 有k个点有贡献的带标号生成树个数就可以了,这个我一开始本来想用组合数+ Cayley定理算的,后来看了AcrossTheSky的代码发现,我们直接用矩阵树定理算出 有贡献点 <= k个的方案数再容斥就可以了.
O ( 2 n / 2 ∗ ( n / 2 ) + n 4 ) O(2 ^{n / 2} * (n / 2) + n ^ 4) O(2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值