zoukankan      html  css  js  c++  java
  • [NOI.AC] count

    思路:
    考虑组合数学。
    当所求中没有重复的时候,方案数就是\(C_{n + 1}^{k}\)
    当有重复的时候...
    设相等的数字之间的距离为\(len\)
    当取0个数时,方案数就是\(C_{n - 1}^{k}\)
    取1个数时,方案数大概是\(2 * C_{n - 1}^{k - 1}\) ,但是如果相同的数字之间那一段没有取任何一个其他的数,那么取任意一个相同的数都是等价的,所以要减去\(C_{n - len}^{i - 1}\)
    取了两个数,方案数就是\(C_{n - 1}^{k - 2}\)
    考试炸了范围...

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define int long long
    const int maxn = 200010;
    const int mod = 1e9+7;
    int n;
    inline int pow_mod(int x,int y) {
    	int res = 1;
    	while(y) {
    		if(y & 1) res = res * x % mod;
    		x = x * x % mod;
    		y >>= 1;
    	}
    	return res % mod;
    }
    inline int read() {
    	int q=0,f=1;char ch = getchar();
    	while(!isdigit(ch)){
    		if(ch==-'-')f=-1;ch=getchar();
    	}
    	while(isdigit(ch)){
    		q=q*10+ch-'0';ch=getchar();
    	}
    	return q*f;
    }
    int fac[maxn];
    int a[maxn];
    int vis[maxn];
    int ifac[maxn];
    inline int C(int x,int y) {
    	if(x < y) return 0;
    	if(y < 0) return 0;
    	return fac[x] * ifac[y] % mod * ifac[x - y] % mod;
    }
    int len;
    int ans[maxn];
    inline void pre () {
    	fac[0] = 1;
    	for(int i = 1;i <= n + 1; ++i) {
    		fac[i] = fac[i - 1] * i % mod;
    	}
    	ifac[n + 1] = pow_mod(fac[n + 1],mod - 2);
    	for(int i = n;i >= 0; --i) {
    		ifac[i] = ifac[i + 1] * (i + 1) % mod;
    	}
    }
    signed main () {
    	n = read();
    	for(int i = 1;i <= n + 1; ++i) {
    		a[i] = read();
    		if(vis[a[i]] == 0) {
    			vis[a[i]] = i;
    		}
    		else len = i - vis[a[i]] + 1;
    	}
    	pre();
    	for(int i = 1;i <= n + 1; ++i) {
    		int res = C(n - 1,i);
    		res = (res + 2 * C(n - 1,i - 1)) % mod;
    		res = (res - C(n - len + 1,i - 1) + mod) % mod;
    		res = (res + C(n - 1,i - 2)) % mod;
    		ans[i] = res;
    	}
    	for(int i = 1;i <= n + 1; ++i)
    		printf("%lld\n",ans[i]);
    	return 0;
    
    }
    
  • 相关阅读:
    Qt之qInstallMessageHandler(重定向至文件)
    linux下MySQL安装及设置
    Apache2 同源策略解决方案
    BSD和云 – 不可错过的BSD聚会
    Nginx转发地址解决跨域问题
    Nginx下css的链接问题
    nginx 基本操作
    Azure 媒体服务可将优质内容传输至 Apple TV
    支付宝接口
    drf过滤组件
  • 原文地址:https://www.cnblogs.com/akoasm/p/9690383.html
Copyright © 2011-2022 走看看