51nod 1202 子序列个数(字符串计数)
来源:互联网 发布:golang http auth 编辑:程序博客网 时间:2024/06/06 19:10
dp[i]代表是以i位的a[i]结尾,有多少种,(包括空集)
状态转移方程 1.如果a[i]之前没有出现过dp[i]=2*dp[i-1] 前面i-1有dp[i-1]种可能,第i个数放或不放
2.如果a[i]之前出现过:dp[i]=2*dp[i-1]-dp[mark[a[i]]-1] 减去重复的部分,mark【i】是a[i]最近一次出现的位置.
最后减一,减去空集
#include <stdio.h>#include <string.h>const int mod=1e9+7;int a[100005];int mark[100005];long long dp[100005];int main(){int n;while(~scanf("%d",&n)){for(int i=1;i<=n;i++){ scanf("%d",&a[i]);}memset(dp,0,sizeof(dp));memset(mark,0,sizeof(mark));dp[0]=1;for(int i=1;i<=n;i++){ if(mark[a[i]]==0) { dp[i]=(2*dp[i-1])%mod; } else { dp[i]=(2*dp[i-1]-dp[mark[a[i]]-1]+mod)%mod; } mark[a[i]]=i;}printf("%I64d\n",dp[n]-1);} return 0;}
阅读全文
0 0
- 51nod 1202 子序列个数(字符串计数)
- 51Nod 1202 子序列个数(简单计数dp)
- 【子序列个数】51nod 1202 子序列个数
- 51nod 1202:子序列个数
- 51nod 1202 子序列个数
- 51nod 1202 子序列个数
- 51nod 1202 子序列个数
- 51Nod 1202 子序列个数
- 51nod 1202 子序列个数
- 51Nod 1202 子序列个数
- 51nod-1202-子序列个数
- 子序列个数(51nod-1202)(dp)
- 51nod 1202 子序列个数(DP,递推找规律)
- 51nod 1202 子序列个数(基础dp)
- 51nod 1202 子序列个数(dp)
- 51nod 1202 子序列个数 (DP) 图解
- 子序列个数 51Nod
- 51nod 1202 子序列个数 (子序列套路dp)&& HDU 5791 Two (两串求相同子序列)
- nginx+php +mysql环境搭建
- CUDA OpenCV编程的一些前人博客
- Ubuntu16.04配置caffe和pycaffe(cpu only)
- 不包含重复元素的集合S,求其所有子集
- CLion运行python程序
- 51nod 1202 子序列个数(字符串计数)
- listview的属性 clipToPadding
- Java多线程--重排序与顺序一致性
- #pragma comment的使用方法 pragma预处理指令详解
- python里从协程返回一个值
- python中开n次方根
- 接口测试基础-5-postman工具介绍和应用--接口测试入门结束篇
- 51nod1536 不一样的猜数游戏 (思考题目的乐趣)
- S5PV210裸机学习笔记(朱老师课程学习)