D. Madoka and The Corruption Scheme -- (贪心,组合数学,构造)

news/2025/3/10 18:33:45/文章来源:https://www.cnblogs.com/chhh31/p/18672737

题目链接:Problem - D - Codeforces

题目大意:

一共n轮比赛,有\(2^n\)个参赛者,第\(i\)轮有\(2^{n - i}\) 场比赛,Madoka能安排第一局的比赛,她想让最后的赢家编号更小,主办方最多有k次操作,能修改任意每一场比赛的获胜情况,可以让最终赢家编号更
大,求Madoka在主办方任意修改之后可能获得的胜利者的最小编号

f30a54b5950e95298be6eb6cd82d53452fadfd15

比如上面就是整个比赛,Madoka安排的第一局的顺序是 3 - 1 4 - 2,最终的结果是1获胜,但是第二个图是主办方修改之后的,导致3获胜了

算法过程

首先,我们可以让这个二叉树的左节点是获胜的那一方,右节点是输的那一方,然后我们看k次操作最多把第一局的那几个节点变成最终赢家,那么这就得满足从二叉树的根节点,到这个节点输的边得少于等于k,那么我求所有输的边有1个,输的边有2个......输的边有k个就一定能把这个点变成最终赢家,那么,主办方最多能变这么多,Madoka就能按照这个来安排开始的顺序,最小的编号就是能除去这么多一定能变成最终节点的节点,我们只需要求所有小于k个输边的数量就行,要用到组合数学,因为每个节点到最终节点的路上一共n条边,求\(C^1_n\) + \(C^2_n\) + ......\(C^k_n\) 就是最终结果

代码
// Problem: D. Madoka and The Corruption Scheme
// Contest: Codeforces - Codeforces Round 818 (Div. 2)
// URL: https://codeforces.com/contest/1717/problem/D
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)//by codeforcer ——
//  ____  _   _  _   _  _   _   ____    _ 
// / ___|| | | || | | || | | | |___  \ | |
//| |    | |_| || |_| || |_| |   __) | | |
//| |    |  _  ||  _  ||  _  |  |__  < | |
//| |___ | | | || | | || | | |  ___) | | |
// \____||_| |_||_| |_||_| |_| |____ / |_|#include<bits/stdc++.h>
using namespace std;typedef int E;
typedef long long LL;
typedef pair<int, int> PII;
typedef tuple<int, int, int> PIII;
typedef tuple<LL, LL, LL> PLLL;
typedef pair<long long, long long> PLL;
typedef unsigned long long ULL;
#define int long long
#define lowbit(x) (x & (-x))
#define mod(x) (x % MOD + MOD) % MOD
#define ls(x) (x << 1)
#define rs(x) (x << 1 | 1)
#define endl '\n'
#define vec vector
#define pb push_back
#define pob pop_back
#define fir first
#define sec second
#define INT 0x3f3f3f3f
#define LLONG 0x3f3f3f3f3f3f3f3fLL
#define lower lower_bound
#define upper upper_bound
#define umap unordered_map
#define uset unordered_set
#define maxheap priority_queue<E, vector<E>, less<E>>
#define minheap priority_queue<E, vector<E>, greater<E>>#define prvec(a)                			\for (int i = 0; i < (a).size(); i++) {	\cout << (a)[i] << " ";   			\}                            			\cout << endl;#define debug0(a)             		        \cout << #a << ": ";               		\for (int k = 0; k < (a).size(); k++) {  \cout << (a)[k] << " ";        		\}                                 		\cout << endl;							#define debug1(a)             		        \cout << #a << ": ";               		\for (int k = 1; k <= (a).size(); k++) { \cout << (a)[k] << " ";        		\}                                 		\cout << endl;		                          LL gcd(LL a, LL b) { return (b) ? gcd(b, a % b) : a; }
LL exgcd(LL a, LL b, LL &x, LL &y) {if (b == 0) { x = 1, y = 0; return a; }LL gcd = exgcd(b, a % b, y, x);y -= a / b * x;return gcd;}
LL qmi(LL a, LL b, LL mod) {LL res = 1;while (b) {if (b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;}const int N = 100010,MOD = 1e9 + 7;const int mod = 1e9 + 7;
int fact[N], infact[N];int pmod(int a,int b){int res=1;while(b){if(b&1) res=res*a%mod;b>>=1;a=a*a%mod;}return res;
}void init()
{fact[0] = 1, infact[0] = 1;for (int i = 1; i <= N; i++){fact[i] = fact[i - 1] * i % mod;infact[i] = infact[i - 1] * pmod(i,mod - 2) % mod;}
}int C(int a,int b)
{return fact[a] * infact[a - b] % mod * infact[b] % mod;
}
void solve() {int n,k;cin>>n>>k;init();int ans = 0;for(int i = 0;i <= min(k,n);i ++){ans = (ans + C(n,i)) % mod;}cout<<ans<<endl;}signed main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);//i//nt n;cin>>n;while(n --)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869547.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP语法基础

PHP语法基础php文档拓展名是.phpphp文件通常包含html标签以及一些php脚本运行代码 ,注意:html js css可以在php文件执行但是,php不能在html js css在php文件执行php语法用;结尾 <!DOCTYPE html> <html> <body> <h1>我的第一张php页面><h1>…

本地打包docker images并上传到服务器.250115

情景: 服务器docker Pull 拉不下来 docker pull easzlab/kubeasz-k8s-bin:v1.31.2 Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 2025-01-14 17:06:35 [ez…

包豪斯学院

包豪斯学院(Bauhaus)是20世纪最具影响力的艺术与设计学府之一,创立于1919年,由建筑师沃尔特格罗皮乌斯(Walter Gropius)在德国魏玛建立。作为现代主义设计的先锋,包豪斯不仅在建筑、工艺、艺术和设计等领域开创了新局面,其设计理念更是深刻影响了全球的艺术与工业生产方…

主机PHP版本过低导致网页无法正常运行的解决办法

问题描述: 用户发现其主机上的PHP版本过低,导致某些功能无法正常使用,影响了网站的整体性能。此外,用户询问是否可以通过升级主机获得免费域名赠品,以及数据库空间不足的问题。 解决方案: 针对您遇到的主机PHP版本过低的问题,这里提供一些解决方案和建议,帮助您顺利升级…

如何解决网站在多台电脑上打开速度慢的问题

问题描述: 用户反馈,其家庭和单位的电脑在访问某个特定域名时速度非常慢,但手机端访问速度正常。此外,用户还提到服务器存在大量漏洞,担心网站安全问题,并询问如何处理这些漏洞。 解决方案: 针对您提到的家庭和单位电脑访问域名速度慢的问题,我们首先需要排查以下几个方…

如何处理宝塔面板升级失败及账户密码重置?

针对您遇到的宝塔面板升级失败以及账户密码重置的问题,我们将为您提供详细的解决方案。 宝塔面板升级失败 宝塔面板升级失败可能是由多种原因引起的,常见的原因包括但不限于以下几点:网络连接不稳定:在升级过程中,如果网络连接中断或者速度过慢,可能会导致下载更新包失败…

升级建站助手后原有站点无法访问怎么办?

关于您提到的升级建站助手后原有站点无法访问的问题,我们将为您提供详细的解决方案。 分析问题原因 首先,我们需要明确几个关键点来帮助分析问题的原因:建站助手与宝塔面板的关系:建站助手和宝塔面板都是用于管理和部署网站的应用程序,但它们之间可能存在功能上的重叠或冲…

补充

补充重要知识 目录补充重要知识防脱发神器颜色的alpha通道尺寸的百分比最大最小宽高什么时候使用绝对定位fixed和absolute的区别伪类选择器contenteditable属性table 元素 防脱发神器 一图胜千言使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码 * {margin: …

如何修改数据库密码?

当您需要修改数据库密码时,确保操作正确且不影响现有应用是非常重要的。以下是详细的步骤说明和注意事项,帮助您顺利完成数据库密码的修改:备份现有数据: 在进行任何修改操作之前,强烈建议您先对当前数据库进行完整备份。这不仅可以防止误操作导致的数据丢失,还能为后续恢…

宝塔面板安全问题及远程端口设置

当您遇到宝塔面板安全问题及远程端口设置时,确保服务器的安全性和稳定性至关重要。以下是如何处理这些问题的详细步骤和建议:确认远程端口设置: 您提到已经将远程端口修改为33079,这是一个很好的做法,因为非标准端口可以增加额外的安全层。请确保该端口在服务器内部防火墙…

解决空间升级后网站无法访问的问题

问题描述: 最近对虚拟主机进行了升级,但升级完成后网站无法正常访问。请问如何排查并解决这个问题? 答案: 您好,根据您的描述,虚拟主机升级后网站无法正常访问。这种情况可能是由多种原因引起的。为了帮助您快速定位并解决问题,建议按照以下步骤进行排查和处理:检查域名…

如何解决网站后台访问被拒绝的问题

问题描述: 最近在访问网站后台时,总是出现“拒绝了我们的链接请求”的错误提示。尽管已经在云锁中设置了IP白名单,但问题仍然存在。请问如何排查并解决这个问题? 答案: 您好,根据您的描述,您在访问网站后台时遇到了“拒绝了我们的链接请求”的错误提示,即使已经在云锁中…