首页 > 其他分享 >CF1523E Crypto Lights

CF1523E Crypto Lights

时间:2024-08-14 18:37:40浏览次数:9  
标签:facinv CF1523E return res llsi Crypto Lights fac mod

小清新 Counting,被徐神绝杀力

直观地想我们需要求出恰好 \(m\) 轮结束的概率 \(p(m)\),但这个显然不好直接求,我们退而求其次

用经典 trick,我们设 \(f(m)\) 表示至少点亮了 \(m\) 盏灯的概率,最后求和得到的就是带权的概率和也就是期望

考虑 \(f(m)\) 如何计算,转为计算合法局面的方案数,即在 \(n\) 个白球中选出 \(m\) 个球涂色,满足任意两个有色球之间的距离 \(\ge k\)

徐神赛时用的是捆绑法,即将一个有色球和右侧的 \(k-1\) 个无色球看成一个整体来考虑;我当时想了一个插板法的做法不过好像大差不差,最后得到的式子为:

\[f(m)=\frac{C_{n-(m-1)\times (k-1)}^{m}}{C_n^m} \]

#include <bits/stdc++.h>

using llsi = long long signed int;
constexpr llsi mod = 1'000'000'007;

llsi ksm(llsi a, llsi b) {
    llsi res = 1;
    while(b) {
        if(b & 1) res = res * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return res;
}

llsi fac[100005], facinv[100005];

void init(int n = 100000) {
    fac[0] = 1;
    for(int i = 1; i <= n; ++i) fac[i] = fac[i - 1] * i % mod;
    facinv[n] = ksm(fac[n], mod - 2);
    for(int i = n; i >= 1; --i) facinv[i - 1] = facinv[i] * i % mod;
    return ;
}

inline llsi C(llsi a, llsi b) {
    return fac[a] * facinv[b] % mod * facinv[a - b] % mod;
}

llsi f[100005];

void work() {
    llsi n, k;
    std::cin >> n >> k;
    memset(f, 0, sizeof(llsi) * (n + 1));
    f[0] = 1;
    // for(llsi i = 0; i <= n; ++i) std::cerr << f[i] << char(i == n ? 10 : 32);
    for(llsi m = 1; m <= n; ++m) {
        llsi t = (m - 1) * (k - 1);
        if(t > n || n - t < m) f[m] = 0;
        else                   f[m] = C(n - t, m) * ksm(C(n, m), mod - 2) % mod;
    }
    // for(llsi i = 0; i <= n; ++i) std::cerr << f[i] << char(i == n ? 10 : 32);
    llsi ans = 0;
    for(llsi i = 0; i <= n; ++i)
        ans += f[i];

    std::cout << ans % mod << char(10);
    return ;
}

int main() {
    std::ios::sync_with_stdio(false);
    init();
    int t; std::cin >> t; while(t--) work();
    return 0;
}

标签:facinv,CF1523E,return,res,llsi,Crypto,Lights,fac,mod
From: https://www.cnblogs.com/cjjsb/p/18359575

相关文章

  • CryptoHouse:由 ClickHouse 和 Goldsky 支持的免费区块链分析服务(ClickHouse 博客)
    我们很高兴地宣布CryptoHouse,在crypto.clickhouse.com上可访问,这是一个由ClickHouse提供支持的免费区块链分析服务。https://crypto.clickhouse.com/现有的公共区块链分析服务通常需要定时、异步查询,而ClickHouse提供实时分析,通过即时查询响应来普及访问权限。用户可以......
  • Cryptomator
    Cryptomator现在不少云同步服务都声称自己会加密储存用户资料。不过,主流的云服务商,例如Dropbox、GoogleDrive等,都不支持用户单独提供加密密钥来实现端到端加密。他们持有用户资料的解密密钥。这种加密或许能够防止黑客入侵,但并不能防止云服务商解密你的资料。好在大多数云服......
  • 前端RSA密钥生成和加解密——window.crypto使用相关
    转自简书,原文地址,本文介绍window.crypto关于RSA方面的API。cryptoAPI支持常用的rsa、aes加解密,这边介绍rsa的应用。浏览器兼容性window.crypto需要chrome37版本,ie11,safari11才支持全部API而基本的加解密在safari7就可以。生成公私钥crypto.subtle.generateKey(algorith......
  • Qt 和 VS 使用 crypto++
    官网:https://www.cryptopp.comGitHub:https://github.com/weidai11/cryptopp修改后的820版本https://github.com/dragonfly1208/cryptopp/tree/cryptopp820在线文档:https://www.cryptopp.com/docs/ref/index.html1生成动态库静态库文件1.1VS编译生成dll和lib库,版本:cryptop......
  • 2021-工业互联网内部预选-Crypto_crackCipher
    Crypto_crackCipher考点:RSA、共模攻击、小明文攻击#题目n:319346705152431353765444947778001678187416808894823574760436641015522638469659027090626875609493629475537497235247214357478969579124921471930436717627582739285578749256377881281252349890970546215813089......
  • 在AWS Lightsail建立WordPress Multisite & Route 53 subdomains & Hexo Blog & WordP
    1.0前言玩Startup比賽,因需高效快速地做POC原型產品,所以利用AWS云端服務來更快地開發。你會學到:LightSail建立WordpressmultisiteRoute53註冊WordpressSubdomains&GithubCuostomDomainLightSailCustomDomain&SSLHexo快速搭建GihubPages博客+ Route53 Custom......
  • Java sshtools 生成的 EDDSA 签名与 Python 的 pycryptome 生成的签名不匹配
    我有一个python库,它使用pycryptodomelibrary使用openssh格式的ED25519私钥使用Ed25519算法对数据进行签名。然后需要使用sshtools库和相应的公钥在Java应用程序中验证签名。但是签名验证失败。约束:从文件中读取私钥/公钥很重要。我无法......
  • 在 Windows 上通过 pip 使用 fastmath(gmp 或 mpir)构建 PyCrypto
    我通过pip在Windows上安装了PyCrypto,但我无法构建Crypto.PublicKey._fastmath,因为找不到GMP。我知道voidspace有一个二进制版本,但我想构建最新版本的PyCrypto在Windows上使用GMP或MPIR构建PyCrypto的_fastmath模块可能很复杂,因为没有针对此配......
  • CF1523E Crypto Lights 题解
    CF1523ECryptoLights题解传送门。题目大意:有\(n\)个台灯,初始时都是暗的,每次随机点亮一个暗台灯,若点亮后存在一个长度为\(k\)的连续段有大于一个台灯被点亮则立刻停止,求期望点亮多少台灯。(就是直接把原题翻译搬过来了)很明显的期望dp,状态定义也很明显,设\(f_i\)表示......
  • Crypto专项
    一:常见编码类型ASCII编码(1)特征:ASCII在线转化地址:http://www.mokuge.com/tool/asciito16/工具转码:(1)小葵多功能转换工具(2)CTFcrackTools工具base家族编码(1)base64编码特点:由A-Z,a-z,0-9,+,/64个可见字符组成、""符号作为后缀填充、不属于编码字符;一般情况下密文尾部会有两个......