Increasing Speed Limits HDU - 3030 【dp 树状数组 离散化 上升子序列】

2021-02-01 03:17

阅读:754

标签:acm   oid   c++   fine   value   return   mes   一个   ble   

Increasing Speed Limite HDU 3030

题意

给你一个长度为m的数组A,你可以通过给的X,Y,Z计算获得一个长度为n的数组,问你这个n长的序列有多少个非空严格上升序列。

思路

dp

  • \(dp[i]\): 以第i个元素为结尾的非空严格上升序列个数
  • \(dp[i] =\sum_{j=1}^{i-1}{dp[j]}+1\), 其中 \(a[j]
  • \(ans = \sum_{i=1}^n{dp[i]}\)
  • 用树状数组求前缀和

代码

#include
using namespace std;
#define lowbit(x) (x&(-x));
typedef long long ll;
const int MAXN=500005;
const int MOD= 1000000007;
int n,m;
ll X,Y,Z;
int A[MAXN],a[MAXN],b[MAXN];
ll c[MAXN];
void update(int x,ll value){
	while(x

Increasing Speed Limits HDU - 3030 【dp 树状数组 离散化 上升子序列】

标签:acm   oid   c++   fine   value   return   mes   一个   ble   

原文地址:https://www.cnblogs.com/xuwanwei/p/12806164.html


评论


亲,登录后才可以留言!