LOADING

加载过慢请开启缓存 浏览器默认开启

2024暑假集训第一周总结

2024/7/21

迟来的第一周总结…

第一周一共四场比赛:总的来说还有很多东西没学,或者学的不深,个人感觉八月之前应该在不停的学新东西了,八月之后得对算法加深一些理解和掌握。比赛得时候,签到和能出得思维大家都一样,后期就看谁知识点学过或者掌握的更深了…

牛客多校一:

这一场补了三个题


A-A Bit Common_2024牛客暑期多校训练营1 (nowcoder.com)

题意是给你n(n5000),m(m5000),q(q109)三个数,求从[0,2m)任取数凑成长度为n的序列,并且该序列中存在一个子题意是给你n(n\le5000),m(m\le5000),q(q\le10^9)三个数,求从[0,2^m)任取数凑成长度为n的序列,并且该序列中存在一个子

序列AND值为1,求总共的方案数并对 q 取模。序列AND值为1,求总共的方案数并对\ q \ 取模。

分析:分析:

n,m都是5000,显然时间复杂度在o(n2)以内,所以我们可以考虑枚举子序列的个数n,m都是5000,显然时间复杂度在o(n^2)以内,所以我们可以考虑枚举子序列的个数

假设子序列为k个那么有c(n,k)种序列位置可能假设子序列为k个 那么有c(n,k)种序列位置可能.

一个数AND1只能为1一个数AND为1 只能为1

$多个数AND值为1,那么他们的2进制位最低位一定为1,其他位一定都不同时为1 $

剩下的nk个就随便选了.剩下的n-k个就随便选了 .

总结一下就得出一个公式:总结一下就得出一个公式:

k=2nC(n,k)(2k1)m12(m1)(nk)\sum_{k=2}^{n} C(n,k)(2^k-1)^{m-1}2^{(m-1)(n-k)}

组合数预处理用递推式o(n2),枚举序列计算答案为o(nlogm),总时间复杂度为o(n2)组合数预处理用递推式o(n^2),枚举序列计算答案为o(nlogm),总时间复杂度为o(n^2)

总结:题不难,也没用到的什么难的知识点 还是组合数论推式子类题刷的少


B-A Bit More Common_2024牛客暑期多校训练营1 (nowcoder.com)

题意和范围跟上面一样,区别是找到序列中存在两个子序列AND值为1方案数

分析: