牛客 子序列(dp)
这题的比较关系是有线性关系的,因此设计状态为以第i结尾的个数是多少个,这样可以通过线性递推的方式实现
初始化每个都是1
#include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<algorithm> using namespace std; typedef long long ll; const int N=3e5+10; const int mod=1e9+7; int a[N]; ll f[N]; int main(){ int i; int n; cin>>n; for(i=1;i<=n;i++){ cin>>a[i]; } for(i=1;i<=n;i++) f[i]=1; for(i=1;i<=n;i++){ for(int j=1;j<i;j++){ if(j*log(a[i])>i*log(a[j])){ f[i]=(f[i]+f[j])%mod; } } } ll res=0; for(i=1;i<=n;i++){ res=(res+f[i])%mod; } cout<<res<<endl; }
没有人不辛苦,只有人不喊疼