码迷,mamicode.com
首页 > 其他好文 > 详细

【Dp】子序列

时间:2020-08-28 11:44:13      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:solution   正整数   统计   两种   有一个   loading   问题:   整数   题意   

题目描述

沙都子有一个序列,第i 个位置的数为ai。她知道,该序列共有2n − 1 个子序
列,但有一些子序列长得一样。于是她提出了一个问题:该序列的本质不同的
子序列有多少种呢?
对于1 ≤ p1 < p2 < · · · < pm ≤ n(m 是任意正整数),称(ap1 , ap2 , . . . , apm) 是
一个子序列。
两个子序列(ap1 , . . . , apl ) 和(aq1 , . . . , aqm) 本质相同,当且仅当l = m,且对所
有i = 1, . . . ,m 都满足api = aqi。

 

输入

第一行,一个整数n。
第二行,n 个非负整数ai。

输出

答案模10^9 + 7。

数据范围限制

对于25% 的数据,1 ≤ n ≤ 10。
对于50% 的数据,1 ≤ n ≤ 10^3。
对于100% 的数据,1 ≤ n ≤ 10^6,0 ≤ ai ≤ 10^6。
 

Solution:

这道题更像是一道基础的模型题目,题意十分简单,不难看出是一道统计类型的Dp
我们可以发现,对于以某一个Ai为结尾可构成的本质不同子序列当中,其实无非就两种情况,一个是自己单独成为一个子序列,另一个就是与之前已经形成的子序列连接起来构成新的子序列。
于是我们很容易得到一个基础的方程式:
技术图片
但是如何保证本质不同呢?其实只要在每次方程减去所有同样以Ai结尾的f就好

技术图片

 

【Dp】子序列

标签:solution   正整数   统计   两种   有一个   loading   问题:   整数   题意   

原文地址:https://www.cnblogs.com/Takarada-Rikka/p/13546328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!