【NOIP2021 T2】数列 (sequence) 题解

该博客详细介绍了NOIP2021第二题数列的解题方法,重点在于利用动态规划求解所有合法序列的权值和,并在二进制下讨论位数的填充策略。通过定义状态转移方程,计算出每个状态的贡献,最终得出答案。
摘要由CSDN通过智能技术生成

【NOIP2021 T2】数列

Description

在这里插入图片描述

Input

在这里插入图片描述

Output

输出到文件 sequence.out 中。
仅一行一个整数,表示所有合法序列的权值和对 998244353 取模的结果。

Sample Input

5 1 1
2 1

Sample Output

40

在这里插入图片描述
【样例 2】
见选手目录下的 sequence/sequence2.in 与 sequence/sequence2.ans。

Solution

观察题目,我们发现 a [ i ] a[i] a[i]的顺序不同对答案的贡献是相同的,所以我们考虑顺序放置 a [ i ] a[i] a[i],然后利用组合数求出全部方案,于是这题就可以进行 D P DP DP

以下我们规定关于位数的全是在二进制下讨论,二进制下最低位是第0位

f [ i ] [ j ] [ k ] [ l ] f[i][j][k][l] f[i][j][k][l]表示已经填完了前 i i i个数,当前进位进到的最高位是第 j j j位(也就是说之前的 a [ i ] a[i] a[i]最大填到 j − 1 j-1 j1,即整数 S S S最高在第 j − 1 j-1 j1位填了1), a [ i ] a[i] a[i]中填了 k k k j j j,已经有 l l l个位是1的合法序列的权值总贡献

考虑转移,我们可以用已知的 f [ i ] [ j ] [ k ] [ l ] f[i][j][k][l] f[i][

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值