CCPC

阅读: 评论:0

CCPC

CCPC

DP

样例1
5
4 2 3 1 5
输出 1

序列 是3个数字的波浪折线
dp[ i ]表示以 i 结尾的子序列个数 遍历每个位置 i 记录可以作为中心点的个数k
j从i-1遍历之前处理过的答案
如果a[ j ] < a [ i ]那么他可以作为 i 的一个中点k++ 如果a[ j ] > a[ i ]那么以 j 结尾的子序列都可以接上k和 i 作为一个新子序列 并且j k i也是一个新子序列 dp[ i ] += (dp[ j ] + 1 ) * k

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int maxn = 2e3+10;
const int mod = 1e9+7;
int n,k;
ll dp[maxn];
int a[maxn];int main() {cin>>n;for(int i=1; i<=n; i++) cin>>a[i];for(int i=3; i<=n; i++) {k=0;for(int j=i-1; j>=1; j--) {if(a[j]>a[i]) dp[i]+=(dp[j]+1)*k%mod,dp[i]%=mod;else k++;}}ll ans=0;for(int i=1;i<=n;i++) ans+=dp[i],ans%=mod;cout<<ans<<endl;return 0;
}

本文发布于:2024-01-28 07:18:51,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063975385736.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:CCPC
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23