首页 > 其他分享 >D. Madoka and The Corruption Scheme -- (贪心,组合数学,构造)

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

时间:2025-01-15 11:54:56浏览次数:1  
标签:typedef Madoka -- long int Scheme 节点 define

题目链接: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;
}

标签:typedef,Madoka,--,long,int,Scheme,节点,define
From: https://www.cnblogs.com/chhh31/p/18672737

相关文章

  • shell获取ip的方式
    1、以函数获取ip的案例1)构建函数functionget_ip(){函数体}这个function关键字用于定义一个名为get_ip的函数2)解析默认路由array=($(echo"$route"|tr''''))array=($(/usr/sbin/iproute|tr''''))这个命令将route变量的内容转换为一个数组array,tr'......
  • 解决Hyper-V保留端口导致各种端口占用报错的问题
    0.有时候在本地启用一个服务比如MySQL服务,或者在启用IDEA的调试的时候,或者在本地启用一个监听端口的时候可能会出现监听失败的情况,经过查找之后会发现并没有应用占用相应的端口。1.经过查找发现其实是在启用了Hyper-V之后系统会保留一些端口,这些端口如果包含了你应用要使用的端口......
  • Pip - Installing plotly stuck
    pipinstall-ihttps://pypi.org/simplepackage_namepipinstall-ihttps://pypi.python.org/simplepackage_namepipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplepackage_name (duckdb_penv)frank@ZZHPC:/mnt/d/ZZHUBT/workspace/duckdb_penv$pipinstall......
  • JS MutationObserver监听DOM元素改变
    JSMutationObserver监听DOM元素改变://目标容器constchatSection=document.querySelector('section.chat');if(!chatSection){console.error('未找到容器');}else{//解析详细数据的函数functionparseChatData(){console.log('解析到的......
  • 65R420-ASEMI超洁MOS管65R420
    编辑:ll65R420-ASEMI超洁MOS管65R420型号:65R420品牌:ASEMI封装:TO-220F最大漏源电流:8A漏源击穿电压:650V批号:最新RDS(ON)Max:0.42mΩ引脚数量:3沟道类型:N沟道MOS管芯片尺寸:MIL漏电流:恢复时间:ns芯片材质:封装尺寸:如图特性:超洁MOS管、N沟道MOS管工作结温:-55℃~150℃65R420......
  • 如何利用可视化工具提高远程设计团队的工作效率
    一、远程设计团队面临的主要挑战远程办公虽然提供了灵活性,但也使得设计团队面临了若干挑战。以下是远程设计团队常见的几大问题:1.时区差异带来的挑战设计团队的成员通常分布在不同的时区,这种地理上的分散性直接影响到团队协作的效率。举例来说,当一个位于美国的设计师完成了设......
  • CS61B srping 2018 proj1Gold-Autograding https://sp18.datastructur.es/ 我放弃了
    介绍和GettingtheSkeletonFiles想办法找到下面四个文件这个proj要编写一个autoGrader,提供如下文件:StudentArrayDeque.java:AbuggyimplementationofArrayDeque.有错误的ArrayDequeArrayDequeSolution.java:AcorrectimplementationofArrayDeque.正确的ArrayDequ......
  • zabbix操作系统自动注册
    原文出处:乐维社区zabbix自动注册功能允许已指定zabix_server/proxy并配置了Hosname的操作系统自动注册到zabbix服务器,同时能按照操作系统主机信息匹配对应的分组、模板而无需手动配置。 环境信息如下:角色主机名IPzabbix-serverzabbix_server192.168.2......
  • apache-skywalking-apm-10.1.0使用
    ​apache-skywalking-apm-10.1.0使用本文主要介绍如何使用apache-skywalking-apm-10.1.0,同时配合elasticsearch-8.17.0-windows-x86_64来作为存储 es持久化数据使用。步骤如下:一、下载elasticsearch-8.17.0-windows-x86_641、下载ES(elasticsearch简称ES下载链接:https://w......
  • Azure Repos的SSH配置
    ###服务器的系统为RockyLinux9.41.进入文件夹~/.ssh/,添加私钥到本地。续注意,根据官方文档,添加的加密类型目前只支持RSA。一路回车生成(可以根据需求添加密码)。```shssh-keygen-trsa-sha2-256-C"yourEmail"```2.文件夹中生成了id_rsa,id_rsa.pub两个文件,讲公钥的......