首页 > 其他分享 >2024牛客多校1

2024牛客多校1

时间:2024-07-21 18:51:49浏览次数:13  
标签:特殊 奇数 个数 多校 2024 牛客 按位 序列

2024牛客多校1

2024年第一场多校赛,打的很一般,多校之前vp的几场多校成绩还不错,一场比赛直接打回原形。

赛时队友做的签到题C、H,吃了两发罚时,我自己推的A,出的很快,可惜没注意取模,吃了发罚时,长个记性吧。

A

给定n,m,p,问长度为n,并且都由小于 \(2 ^ m\) 的数组成,存在一个子序列的按位且等于1的序列有多少种。

假设n个数中,有k个数为奇数,那么对于其他 \(n - k\) 个偶数,他们的高 \(m - 1\) 位就可以随便选了。对于这k个奇数,要保证每一位这k个数中至少有一个是0。最后答案就为

\[\sum_{k = 1} ^ n C(k, n)(2 ^ {k - 1}) ^ {m - 1}2 ^ {(n - k)(m - 1)} \]

其中每项依次代表,挑选k个奇数,奇数的每一位至少有1个0的方案数,有m-1位,偶数除最低位,其他任选的方案数

B

B题是A题的hard版本,将A中的至少一个子序列改为至少两个子序列

那么一个很直观的方法就是求出只存在一个子序列的方案数有多少种,在用A中的减去即可

首先是两个结论:
1、如果一个子序列按位且等于1,那么再添上任意一个奇数,那么得到的新序列按位且还等于1。
2、如果一个序列按位且等于1,且他没有按位且等于1的子序列,那么这个序列中每个数都有一位是0,且序列中其他数该位都是1。

我们第二个结论中该数的0位成为特殊位,那么我们就要保证每一个数都至少有1个特殊位。考虑使用do求一个奇数序列每个数都有关键位的方案数。 \(f[i][j]\) 代表j个数i个特殊位的情况。那么在不考虑吧这j个数的顺序的情况,转移方程为

\[f[i][j] = f[i - 1][j - 1] + j * f[i - 1][j] \]

我们可以新填一个数,并给这个数一个新的特殊位,也可以把这个特殊位,分给原有的j个数其中之一。

有了j个数i个特殊位的方案数之后我们还需要做些什么呢?顺序问题!因为这j个数每个数都有属于自己独特的特殊位,所以他们必然两两不同,那么他们放入序列中的顺序问题,直接去乘全排列就好。还有什么呢?对于这j个数,他们只是拥有i个特殊位,这i个特殊位还需要从m-1位中挑选出来。这i个特殊位,拥有他们的数这一位是0,其他数全是1,那么其他m-1-i位需要放什么呢?首先肯定不能全1,如果全1这些奇数按位且就不等于1了。其次这些数也不能只有一个1,如果只有一个1,这些数的特殊位就会变多,会和特殊位更多的情况干扰。所以每一位的方案数就是 \(2^k-1-k\) 。再枚举一些奇数的个数这题就结束了,好了上一下代码吧。代码只供参考

void solve() {
	for (int i = 2; i <= n; i++) { // 枚举奇数个数
		i64 t = qpow(2ll, i);
		i64 res = qpow((t - 1 + p) % p, m - 1);
		i64 k = ((t - 1 - i ) % p + p) % p;
		for (int j = 1; j <= m - 1; j++) {
			pw[j] = pw[j - 1] * k % p; // 求非特殊位的方案数
		}
		for (int j = i; j <= m - 1; j++) { // 枚举特殊位个数
			res -= c[m - 1][j] * f[j][i] % p * fac[i] % p * pw[m - 1 - j] % p;
			res = (res % p + p) % p;
		}
		res = res * c[n][i] % p * qpow(2ll, (n - i) * (m - 1) % p) % p;
		ans = (ans + res) % p;
	}
}

D

标签:特殊,奇数,个数,多校,2024,牛客,按位,序列
From: https://www.cnblogs.com/rxzfn/p/18314759

相关文章

  • NOI 2024
    省流:100+264+180=544,rk45极限进队。赛前状态感觉还行,gzy天天在模拟赛里爆标,给他磕头了。day0开幕式。很想喷【】【】【】【】【】【】,算了不喷了。笔试,开场10s大家就开始笑,笔试把答案发下来了。”我们题目的配置出了一点问题,大家稍安勿躁“。致敬传奇出题人。推迟15......
  • 2024大模型安全实践白皮书(可下载)
    以上是资料简介和目录,如需下载,请前往星球获取:https://t.zsxq.com/qd9rs......
  • vue3 ts 项目增加eslint插件实现命令行报错提示和vscode 报错提示,eslint 最新版本9.x
    快速开始安装eslintyarnaddeslint-D然后运行初始化eslintnpxeslint--init接着上面命令会自动生成一个新文件eslint.config.jseslint.config.jsimportglobalsfrom"globals";importpluginJsfrom"@eslint/js";importtseslintfrom"typescript-eslint......
  • 2024.7.20
    模拟赛昨天的题解还在咕。。。今天的又来了。。。T1SimpleMath2签到题,推一推式子就好了。\[\lfloor{\frac{a^b}{c}}\rfloor\modc=x\]\[\lfloor{\frac{a^b}{c}}\rfloor=k\timesc+x\]\[\frac{a^b-(a^b\modc)}{c}=k\timesc+x\]\[a^b-(a^b\modc)=k......
  • 免费【2024】springboot宝鸡文理学院学生成绩动态追踪系统
     博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大......
  • 免费【2024】springboot宝鸡文理学院学生成绩动态追踪系统
     博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大......
  • 免费【2024】springboot宝鸡文理学院学生成绩动态追踪系统
     博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大......
  • 2024夏令营提高1模考0721模拟赛(提高1)补题报告
    2024夏令营提高1模考0721模拟赛(提高1)补题报告\[07121模拟赛(提高1)\\\补题报告\\\\2024年7月21日\\\by\\\唐一潇\]一、做题情况第一题比赛\(100/100\),赛后通过第二题比赛\(0/100\),赛后通过第三题比赛\(0/100\),赛后通过第四题比赛\(0/100\)......
  • 大创项目个人周报(2024.7.15—2024.7.21)
    一、搭建开发环境1.下载AndroidStudio2.运行第一个程序二、入门Kotlin语言1.打印语句的操作,用println()函数funmain(){println("HelloWorld!")}2.变量的定义:在Kotlin中定义变量只有以如下两种方式定义var[变量名称]:[数据类型]val[变量名称]:[数据类型......
  • 2024-7-21 信友队模考总结
    说是总结这个东西很有帮助,所以就写一下。开题先看了一遍感觉前三题还有希望,第四题直接寄了,期望根本就不会,还是自己太菜。T2比较难看,T3感觉像裸的分组背包,T1看着好些,直接开题。开写T1很明显的前缀和维护,然后就去想双指针考虑单调性,发现既然是求余数怎么可能有单调性。然后......