题意:在长度为n的序列中 求有多少子序列满足
思路:两边取对数 则公式转换为
直接用这个条件区间 去求上升子序列的数量即可
dp[i] 表示以i为结尾的序列数量的多少 初始状态明显为1
#include <bits/stdc++.h> using namespace std; #define LL long long const int N = 105,mod = 1e9 + 7; LL dp[N],a[N]; int main() { ios::sync_with_stdio(0); int n ; cin >> n ; for(int i = 1;i <= n; i++) { cin >> a[i]; dp[i] = 1; } LL res = 0; for(int i = 1;i <= n; i ++) { for(int j = 1; j < i ;j ++) { if(j * log(a[i]) > i * log(a[j])) dp[i] = (dp[i] + dp[j])%mod; } res = (res + dp[i])%mod; } cout << res << '\n'; return 0; }