题目链接:http://acm.fzu.edu.cn/problem.php?pid=2129

dp[i]表示前i个数的子序列个数

当a[i]在i以前出现过,dp[i] = dp[i - 1]*2 - dp[pre - 1],pre表示a[i]在i之前的位置

当a[i]在i以前没有出现过,dp[i] = dp[i - 1] *2 + 1

 1 //#pragma comment(linker, "/STACK:102400000, 102400000")
 2 #include <algorithm>
 3 #include <iostream>
 4 #include <cstdlib>
 5 #include <cstring>
 6 #include <cstdio>
 7 #include <vector>
 8 #include <cmath>
 9 #include <ctime>
10 #include <list>
11 #include <set>
12 #include <map>
13 using namespace std;
14 typedef long long LL;
15 typedef pair <int, int> P;
16 const int N = 1e6 + 5;
17 LL dp[N], mod = 1e9 + 7, pre[N];
18
19 int main()
20 {
21     int n, num;
22     while(~scanf("%d", &n)) {
23         memset(pre, 0, sizeof(pre));
24         for(int i = 1; i <= n; ++i) {
25             scanf("%d", &num);
26             if(pre[num]) {
27                 dp[i] = ((dp[i - 1]*2 - dp[pre[num] - 1]) % mod + mod) % mod;
28             } else {
29                 dp[i] = (dp[i - 1]*2 + 1) % mod;
30             }
31             pre[num] = i;
32         }
33         printf("%lld\n", dp[n]);
34     }
35     return 0;
36 }

转载于:https://www.cnblogs.com/Recoder/p/5876510.html

FZU 2129 子序列个数 (递推dp)相关推荐

  1. 解题报告:luogu P2272 [ZJOI2007]最大半连通子图(tarjan缩点、递推DP、hash、set判重)

    这时yxc上课时讲解的截图. 一般用到tarjan算法的题目步骤都非常相似: tarjan算法 缩点,建图(这里要判重) 按照拓扑序递推(这里缩点以后逆向就已经是拓扑序了)/ 循环遍历新图求解答案. ...

  2. 2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)

    整理的算法模板合集: ACM模板 题目传送门 三段题面,只有第三段是有用的-前两段又长单词又难懂,就是在讲故事...不过针对四种情况给出四个图帮助我们理解题意是真的赞,可能出题人怕我们看不懂吧(第一句 ...

  3. hdu1978(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 分析: 递推DP. dp[][]表示可以到达改点的方法数. 刚开始: 外循环扫描所有点dp[x] ...

  4. 递推DP URAL 1119 Metro

    题目传送门 1 /* 2 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 3 递推DP:仿照JayYe,处理的很巧妙, ...

  5. 递推DP HDOJ 5459 Jesus Is Here

    题目传送门 题意:简单来说就是sn = sn-1 + sn-2递推而来,求其中所有c字符的:∑i<j:sn[i..i+2]=sn[j..j+2]=''cff"(j−i) mod 530 ...

  6. [DFS/递推/DP] 2327 [SCOI2005] 扫雷 ( 普及+/提高

    Date:2019/10/13 Degree of difficulty:Universal Original question:P2327 [SCOI2005]扫雷 原题与改编 10.13月考[爆零 ...

  7. 递推DP UVA 1366 Martian Mining

    题目传送门 1 /* 2 题意:抽象一点就是给两个矩阵,重叠的(就是两者选择其一),两种铺路:从右到左和从下到上,中途不能转弯, 3 到达边界后把沿途路上的权值相加求和使最大 4 DP:这是道递推题, ...

  8. POJ 1661 Help Jimmy(递推DP)

    思路: 1. 每个板子有左右两端, dp[i][0], dp[i][1] 分别记录左右端到地面的时间 2. 从下到上递推计算, 上一层的板子必然会落到下面的某一层板子上, 或者地面上 总结: 1. 计 ...

  9. HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )

    题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...

最新文章

  1. paragraph设置行距_LaTex学术写作——设置段落 行间距 段间距 文本对齐方式
  2. F5 BIG-IP 远程代码执行漏洞 CVE-2021-22986 虚拟机上复现
  3. 用户类java,通过Java中的类和接口实现不同的用户类型
  4. 点a链接写邮件小技巧
  5. 详解 Cookie 纪要(vue.cookie,jquery.cookie简化)
  6. 序列复杂度怎么看_每日算法系列【LeetCode 376】摆动序列
  7. ES6新特性_ES6的数值扩展---JavaScript_ECMAScript_ES6-ES11新特性工作笔记039
  8. Day01----jsp
  9. LightGBM算法解析
  10. jdk lambda表达式的坑
  11. 谷歌地图离线地图开发教程
  12. 海康8700等联网网关通过GB28181接入LiveGBS流媒体服务实现web端无插件直播
  13. 数据库实验7---数据库的备份与恢复
  14. SpringBoot爬虫
  15. 中图分类法----O 数理科学和化学
  16. App推广统计代替渠道包统计的方法
  17. AFX_EXT_CLASS的使用
  18. PO_从PO追溯PR的方式和表(分析)
  19. Android手机之间不消耗流量互传文件
  20. 电脑中没有显示网络连接到服务器地址,电脑没有网络可以连接到服务器地址

热门文章

  1. 不同网段的局域网怎么互通_智能化工程中,局域网IP地址不够用怎么解决?
  2. 华三防火墙配置端口地址转换_H3C防火墙配置命令
  3. android测试测试什么,1,web测试,Android测试,Ios测试的共同点与
  4. java多线程阶乘_【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )...
  5. Julia的安装与配置详解(包含在Ubuntu 18.04和Windows 10系统上Julia的安装)
  6. Java InputStream转换为String
  7. IntelliJ IDEA功能和惊喜赠品
  8. dvm与art的区别_Android运行时– DVM与ART,AOT与JIT
  9. 理解类路径是什么意思?如何运用包?
  10. 继承的作用是什么?看看下面这些例子吧!