FZU 2129 子序列个数 (递推dp)
题目链接: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)相关推荐
- 解题报告:luogu P2272 [ZJOI2007]最大半连通子图(tarjan缩点、递推DP、hash、set判重)
这时yxc上课时讲解的截图. 一般用到tarjan算法的题目步骤都非常相似: tarjan算法 缩点,建图(这里要判重) 按照拓扑序递推(这里缩点以后逆向就已经是拓扑序了)/ 循环遍历新图求解答案. ...
- 2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)
整理的算法模板合集: ACM模板 题目传送门 三段题面,只有第三段是有用的-前两段又长单词又难懂,就是在讲故事...不过针对四种情况给出四个图帮助我们理解题意是真的赞,可能出题人怕我们看不懂吧(第一句 ...
- hdu1978(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 分析: 递推DP. dp[][]表示可以到达改点的方法数. 刚开始: 外循环扫描所有点dp[x] ...
- 递推DP URAL 1119 Metro
题目传送门 1 /* 2 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 3 递推DP:仿照JayYe,处理的很巧妙, ...
- 递推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 ...
- [DFS/递推/DP] 2327 [SCOI2005] 扫雷 ( 普及+/提高
Date:2019/10/13 Degree of difficulty:Universal Original question:P2327 [SCOI2005]扫雷 原题与改编 10.13月考[爆零 ...
- 递推DP UVA 1366 Martian Mining
题目传送门 1 /* 2 题意:抽象一点就是给两个矩阵,重叠的(就是两者选择其一),两种铺路:从右到左和从下到上,中途不能转弯, 3 到达边界后把沿途路上的权值相加求和使最大 4 DP:这是道递推题, ...
- POJ 1661 Help Jimmy(递推DP)
思路: 1. 每个板子有左右两端, dp[i][0], dp[i][1] 分别记录左右端到地面的时间 2. 从下到上递推计算, 上一层的板子必然会落到下面的某一层板子上, 或者地面上 总结: 1. 计 ...
- HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )
题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...
最新文章
- paragraph设置行距_LaTex学术写作——设置段落 行间距 段间距 文本对齐方式
- F5 BIG-IP 远程代码执行漏洞 CVE-2021-22986 虚拟机上复现
- 用户类java,通过Java中的类和接口实现不同的用户类型
- 点a链接写邮件小技巧
- 详解 Cookie 纪要(vue.cookie,jquery.cookie简化)
- 序列复杂度怎么看_每日算法系列【LeetCode 376】摆动序列
- ES6新特性_ES6的数值扩展---JavaScript_ECMAScript_ES6-ES11新特性工作笔记039
- Day01----jsp
- LightGBM算法解析
- jdk lambda表达式的坑
- 谷歌地图离线地图开发教程
- 海康8700等联网网关通过GB28181接入LiveGBS流媒体服务实现web端无插件直播
- 数据库实验7---数据库的备份与恢复
- SpringBoot爬虫
- 中图分类法----O 数理科学和化学
- App推广统计代替渠道包统计的方法
- AFX_EXT_CLASS的使用
- PO_从PO追溯PR的方式和表(分析)
- Android手机之间不消耗流量互传文件
- 电脑中没有显示网络连接到服务器地址,电脑没有网络可以连接到服务器地址
热门文章
- 不同网段的局域网怎么互通_智能化工程中,局域网IP地址不够用怎么解决?
- 华三防火墙配置端口地址转换_H3C防火墙配置命令
- android测试测试什么,1,web测试,Android测试,Ios测试的共同点与
- java多线程阶乘_【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )...
- Julia的安装与配置详解(包含在Ubuntu 18.04和Windows 10系统上Julia的安装)
- Java InputStream转换为String
- IntelliJ IDEA功能和惊喜赠品
- dvm与art的区别_Android运行时– DVM与ART,AOT与JIT
- 理解类路径是什么意思?如何运用包?
- 继承的作用是什么?看看下面这些例子吧!