线性dp-计数类题目9(斐波那契字符串)

题目链接

解题思路

题目中的字符串有0和1组成,要构成逆序对,1要在0前面。

根据题意:

  • S 1 = 0 S1=0 S1=0
  • S 2 = 0 S2=0 S2=0
  • 对于任意正整数 n ( n ≥ 3 ) , S n = S n − 2 + S n − 1 n(n≥3),Sn=Sn−2+Sn−1 n(n≥3),Sn=Sn−2+Sn−1(" + + +"表示字符串拼接)。

如果我们知道 S n − 2 Sn-2 Sn−2和 S n − 1 Sn-1 Sn−1中的分别有多少个逆序对,有知道 S n − 2 Sn-2 Sn−2中有多少个1, S n − 1 Sn-1 Sn−1中有多少个0,那么我们就可以知道 S n Sn Sn中有多少个逆序对。

于是我们定义 d p i 0 dpi0 dpi0表示 S i Si Si中0的个数, d p i 1 dpi1 dpi1表示 S i Si Si中1的个数。再定义 f i fi fi为 S i Si Si的逆序对个数,我们可以得到以下状态转移方程:

i = 1 , d p i 0 = 1 , d p i 1 = 0 , f i = 0 i=1,dpi0=1,dpi1=0,fi=0 i=1,dpi0=1,dpi1=0,fi=0

i = 2 , d p i 0 = 0 , d p i 1 = 1 , f i = 0 i=2,dpi0=0,dpi1=1,fi=0 i=2,dpi0=0,dpi1=1,fi=0

i > = 3 时 , d p i 0 = d p i − 2 0 + d p i − 1 0 , d p i 1 = d p i − 2 1 + d p i − 1 1 , f i = f i − 2 + f i − 1 + d p i − 2 1 ∗ d p i − 1 0 . i>=3时,dpi0=dpi-20+dpi-10,dpi1=dpi-21+dpi-11,fi=fi-2+fi-1+dpi-21*dpi-10. i>=3时,dpi0=dpi−20+dpi−10,dpi1=dpi−21+dpi−11,fi=fi−2+fi−1+dpi−21∗dpi−10.

(注意:要对结果取模)

AC代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9 + 7, maxn = 1e5 + 5;
int t, dp[maxn][2], f[maxn], n;
void init() {
	dp[1][0] = 1;
	dp[2][1] = 1;
	for (int i = 3; i <= 100000; i++) {
		dp[i][0] = (dp[i - 1][0] + dp[i - 2][0]) % mod;
		dp[i][1] = (dp[i - 1][1] + dp[i - 2][1]) % mod;
		f[i] = (dp[i - 1][0] * dp[i - 2][1] % mod + f[i - 1] + f[i - 2]) % mod;
	}
}
signed main() {
	cin >> t;
	init();
	while (t--) {
		cin >> n;
		cout << f[n] << endl;
	}
	return 0;
}
相关推荐
土司大王18 分钟前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树
2601_9622186124 分钟前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
那年窗外下的雪.1 小时前
AIDC 学习日志|第 22 天|All-Active/Single-Active 故障演练设计
服务器·网络·学习·算法·哈希算法
wzdark2 小时前
基于启发式搜索的最优路径规划算法研究4
算法
l1t2 小时前
用superpi、tinypi、tpi等工具计算圆周率的比较
c语言·算法
a187927218312 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表
2601_958352903 小时前
还要写 AEC 算法?0 代码 + 6 个引脚,F-18 让通话清晰度提升 300%
人工智能·算法·降噪消回音
happyprince3 小时前
03-regmix-深刻观-哲学与升华
算法
一路向阳~负责的男人3 小时前
运动控制算法收录
算法
czt_java3 小时前
5个核心位运算公式
算法