这是一道类似导弹拦截的dp题
首先式子可化为 log(a[j])/j<log(a[i])/i
然后用dp[i] 来表示以i位为结尾的子序列的个数
#include <bits/stdc++.h> #define ll long long int const N=110; int const mod=1e9+7; using namespace std; int n,a[N],dp[N],ans; int main() { cin>>n; for(int i=1;i<=n;++i)cin>>a[i]; for(int i=1;i<=n;++i) { for(int j=1;j<i;++j) if(log(a[j])/j<log(a[i])/i) dp[i]+=dp[j]%mod; dp[i]++; } for(int i=1;i<=n;++i) ans+=dp[i]%mod; cout<<ans<<endl; return 0; }