博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
noi.ac day5t1 count
阅读量:6464 次
发布时间:2019-06-23

本文共 985 字,大约阅读时间需要 3 分钟。

分析

首先一个很重要的性质是每个数至少出现一次

所以只有一个数会出现两次

我们只需要求出n+1个数选k个数的方案数再减去重复的部分即可

重复部分于两个相同数中间的距离有关,详见代码

代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int mod = 1e9+7;int p[100100];inline int pw(int x,int p){ x%=mod; int res=1; while(p){ if(p&1)res=(long long)res*x%mod; x=(long long)x*x%mod; p>>=1; } return res;}inline int c(int n,int m){ if(m>n)return 0; return (long long)p[n]*pw(p[m],mod-2)%mod*pw(p[n-m],mod-2)%mod;}int sum[100100],a[100100];int main(){ int n,m,i,j,k,wh; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d",&a[i]); if(sum[a[i]])wh=i-sum[a[i]]; sum[a[i]]=i; } p[0]=p[1]=1; for(i=2;i<=n+1;i++)p[i]=(long long)p[i-1]*i%mod; for(k=1;k<=n+1;k++) printf("%d\n",(c(n+1,k)-c(n-wh,k-1)+mod)%mod); return 0;}

转载于:https://www.cnblogs.com/yzxverygood/p/9894931.html

你可能感兴趣的文章
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
HDU 1402 A * B Problem Plus FFT
查看>>
[CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数
查看>>
Security updates and resources
查看>>
深入理解JavaScript系列(25):设计模式之单例模式
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>
给定一个序列,判断该序列是否为二叉树查找树的后序遍历序列
查看>>
Sqoop架构(四)
查看>>
golang copy函数
查看>>
《你有多少问题要请示》精华集粹
查看>>
深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍【转】
查看>>
leveldb学习:DBimpl
查看>>
MySQL存储引擎--MYSIAM和INNODB引擎区别
查看>>
[Recompose] Stream Props to React Children with RxJS
查看>>
打印图片
查看>>
apache 配置
查看>>
SHOW CREATE DATABASE Syntax
查看>>