CF1717D Madoka and The Corruption Scheme

Summary: 二项式、二进制路径、(逆元)

Day 20220907

距离 CSPS 43Days
距离 NOIP 72Days

上午VP了 CFR#818 Div2,切了ABC,D没出来。。。

Description

给定 2n2^n2n 个选手按照淘汰赛规则淘汰(树形),可以设定每场比赛获胜方(左儿子/右儿子)
期望最后根节点(最终获胜者)编号最小。
同时,你的方案设定后,赞助商改变 kkk 场比赛的胜负指定(原节点左儿子胜改为右儿子胜,或反之),求最差情况编号最小的获胜者。

Solution

显然,赞助商想让最终获胜者编号尽量大。
考虑Sponsor想让 xxx 号胜利,则需要保证路径上的每一条路畅通直到根节点。

若 k>=nk>=nk>=n, 只要把最大编号一路保送上升即可。
若 k<nk<nk<n,我们考虑:
一个人可以被保送,前提是到根节点的路径上的每一条路畅通直到根节点废话重复 。
如果不畅通,修改道路(胜负场)即可。

那么若点x到根节点的道路上需要改的道路不超过 kkk 条,赞助商就可以将 xxx 保送。

用二进制表示路的情况,(如01010101)
000 为不向上通, 111 反之。
则若路径上 000 的个数 ≤k\le k≤k ,赞助商就可以保送。

所以答案为 ∑i=0min⁡(n,k)(ni)\sum_{i=0}^{\min(n, k)}\binom{n}{i}∑i=0min(n,k)​(in​),为到根节点路径上断路 000 个数 ≤k\le k≤k 的点的个数

PS:注意二项式(组合数)计算处理逆元和阶乘

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll read(){ll res=0, f=1; char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar();}while(ch>='0'&&ch<='9') {res=(res<<3)+(res<<1)+ch-48; ch=getchar();}return res*f;
}
const ll inf=0x3f3f3f3f3f3f3f3f, maxn=1e16;ll n, k, mod=1000000007;
ll inv[1000006], f[1000006];
ll qp(ll a, ll x){if(!x) return 1;ll d=qp(a, x/2)%mod;if(x&1) return d*d%mod*x%mod;return d*d%mod;
}int main(){//  freopen(".in", "r", stdin);
//  freopen(".out", "w", stdout);n=read(), k=read();inv[0]=inv[1]=1, f[1]=1;for(ll i = 2; i <= 1000006 ; i++)inv[i]=-(mod/i)*inv[mod%i]%mod, inv[i]=(inv[i]+mod)%mod, f[i]=f[i-1]*i%mod;for(ll i = 2; i <= 1000006 ; i++)inv[i]=(inv[i]*inv[i-1]%mod+mod)%mod;ll ans=1;for(ll i = 1; i <= min(n, k) ; i++)ans=(ans+f[n]*inv[i]%mod*inv[n-i]%mod)%mod;printf("%lld", ans);return 0;
}

CF1717D Madoka and The Corruption Scheme相关推荐

  1. Codeforces div2 D. Madoka and The Corruption Scheme

    组合数学题 题意: 给定两个数n,k,共有2^n位选手进行2^k场淘汰赛,比赛方可以改变k场比赛的结果,要求最大化的最小值是多少. 思路:先看特殊情况当k>n时,比赛方可以控制最大序号的选手直接 ...

  2. Codeforces Round #818 (Div. 2)

    D Madoka and The Corruption Scheme 我们可以将所有的比赛看成有 2n2^n2n 个叶子节点的二叉树 问题转换为对每个非叶子结点规定左/右儿子赢,并规定叶子节点编号 使 ...

  3. 2022下半年一些有趣(bushi)的题目记录

    dp字符串匹配 Text Editor 组合数 D. Madoka and The Corruption Scheme dp字符串匹配 Text Editor 链接:https://codeforce ...

  4. bart使用方法_使用简单变压器的BART释义

    bart使用方法 介绍 (Introduction) BART is a denoising autoencoder for pretraining sequence-to-sequence mode ...

  5. 编码 data:text/html;c,关于 Data URI Scheme -- data:image/jpg;base64

    转载一篇大神的文章 大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqA ...

  6. malloc为什么会报错:memory corruption

    最近遇到一个问题,很有意思,在此记录下,以备后续参考. 程序运行异常,报错:malloc: memory corruption. 用gdb 调试程序,bt 如下,程序在申请344 bytes内存时失败 ...

  7. C语言Free时报错HEAP CORRUPTION DETECTED

    char *k1; k1 = (char *) malloc(4*sizeof(char)); v1 = (char *) malloc(4*sizeof(char));  strcpy(k1,&qu ...

  8. SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme-

    SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme- SAP QM模块里,事务代码QDB1用于维护取样策 ...

  9. Scheme来实现八皇后问题(2)

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址http://www.cnblogs.com/Colin-Cai/p/9790466.html 作者:窗户QQ/ ...

最新文章

  1. SAP固定资产的几个关键日期
  2. 条件随机场(CRF)相对于HMM,MEMM的优势
  3. vs2008中C#3.0语言的新特性
  4. Android学习之PopupWindow
  5. java嵌入式开发neo4j_java-嵌入式Neo4j实际如何工作?
  6. Python多线程编程基础2:如何创建线程
  7. 敏捷开发中史诗故事与用户故事的颗粒度
  8. 揭秘设计模式:策略模式(Strategy)的枚举(Enum)实现
  9. 数据库链、物化视图、高级复制方面
  10. 基础算法---二分查找
  11. Python 数据挖掘(四) pandas模块 简单使用
  12. Kindle通过邮箱传文件允许的文件类型。
  13. 运营方法论——增长黑客
  14. Cloudreved云盘搭建及配置Aria2离线下载
  15. 如何把Word的默认页面颜色由白色改为绿色
  16. 人群密度算法_算法人群的力量。
  17. css定位“十字架“之水平垂直居中
  18. 数据视化Echarts+百度地图API实现市县区级下钻
  19. 搭建企业内外网可快速稳定访问的共享文件服务器方案
  20. 戒掉坏习惯—六种方法

热门文章

  1. 公开招标,邀请招标,竞争性谈判,询价采购之间的区别
  2. 唇语识别技术的开源教程,听不见声音我也能知道你说什么!
  3. python 行向量、列向量 和矩阵
  4. python成绩查询系统_教你用python爬虫监控教务系统,查成绩快人一步!
  5. VTK学习笔记(三十六)VTK图像填充
  6. 英文论文画图常用软件
  7. 【互联网寒冬】经历裁员,拿20W被迫去大厂
  8. 51单片机定时器介绍
  9. Win32API UNICODE编码宽字节
  10. 黑马程序员---Java 容器集合