\(des\)

给定 \(n\) 的全排列 + 一个值域属于 \([1, n]\) 的元素构成长度为 \(n + 1\) 的序列

问长度为 \(i\) 的本质不同的子序列的个数

\(sol\)

小学计数题

记 \(p + 1, q - 1\) 的元素相同

从起点到第一个相同元素长度 \(p\)

从终点到第二个相同元素长度 \(q\)

对于长度为 \(i\) 的本质不同的子序列的个数

可以用全部的答案 - 出现重复的个数

显然全部的答案 \(n + 1 \choose i\)

对于重复的答案,只存在于重复的元素存在于挑选的元素中的时候

这样的话,挑选的元素只剩下 \(i - 1\) 个

枚举在 \([1, p]\) 中挑选 \(x\) 个,在 \([q, n + 1]\) 中挑选 \(i - 1 - x\) 个统计答案

。。。

这样枚举的就非常zz啊

重复的方案数显然就是 $ q + p \choose i - 1$

时间复杂度 \(O(nlogmod)\)

#include <bits/stdc++.h>

using namespace std;
const int N = 1e5 + 10, Mod = 1e9 + 7; #define gc getchar() inline int read() {int x = 0; char c = gc;while(c < '0' || c > '9') c = gc;
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc; return x;} #define LL long long
#define Rep(i, a, b) for(int i = a; i <= b; i ++) LL fac[N] = {1};
bool vis[N];
LL n, a[N];
LL q, p; LL Ksm(LL a, LL b) {
LL ret = 1;
while(b) {if(b & 1) ret = ret * a % Mod; a = a * a % Mod; b >>= 1;}
return ret;
} LL C(LL n_, LL m) {
if(n_ < m || m == 0) return 0;
return (fac[n_] * Ksm(((fac[m] * fac[n_ - m]) % Mod), Mod - 2)) % Mod;
} int main() {
n = read();
Rep(i, 1, n + 1) fac[i] = (fac[i - 1] * i) % Mod;
Rep(i, 1, n + 1) {
a[i] = read();
if(vis[a[i]]) {
p = n + 1 - i;
Rep(j, 1, i) if(a[j] == a[i]) {q = j - 1; break;}
break;
}
vis[a[i]] = 1;
}
Rep(i, 1, n + 1) {
LL a = C(n + 1, i), b = C(q + p, i - 1);
LL Answer;
if(i == 1) Answer = a - b - 1;
else Answer = a - b;
if(Answer < 0) Answer += Mod;
cout << Answer << "\n";
}
return 0;
}

最新文章

  1. JS模块化
  2. 反射-----学习Spring必学的Java基础知识之一
  3. [手机取证] “神器”IP-BOX的一些问题
  4. TCP的关闭,到底是几次握手,每次的标志位到底是什么!
  5. PYTHON 自动化学习之路
  6. Code Consultation
  7. leetcode95 Unique Binary Search Trees II
  8. HTML5自学笔记[ 20 ]canvas绘图实例之绘制倒影
  9. Magento中如何调用SQL语句
  10. FormBorderStyle.None 时候最大化不遮盖任务栏
  11. 单元测试之获取Spring下所有Bean
  12. Bzoj 1036: [ZJOI2008]树的统计Count 树链剖分,LCT
  13. C语言指针操作
  14. Android Studio常用快捷键使用
  15. 201521123070 《JAVA程序设计》第4周学习总结
  16. semantic ui框架学习笔记二
  17. Grafana的安裝(一)
  18. leetcode55:跳跃游戏
  19. 【Deep Learning】一、AutoEncoder
  20. 浅谈ASP.NET的Postback

热门文章

  1. CF627E Orchestra [矩阵计数]
  2. .NET母版页实例(UI页面)
  3. &quot;超时时间已到。在操作完成之前超时&quot;的解决思路
  4. 【洛谷 P2051】 [AHOI2009]中国象棋(DP)
  5. ECSHOP(3.0.0升级3.6.0)帮助教程
  6. Centos 端口被占用,kill被占用的进程
  7. 浅谈 form 表单提交
  8. Crypto模块中的签名算法
  9. 搭建exsi主机6.5版本
  10. helm笔记