牛客周赛round35
title: 牛客周赛round35
categories:
- ICPC
tags:
- null
abbrlink: 6aff6830
date: 2023-01-25 00:00:00
赛时由于思考问题不清晰,感觉仔细思考一会就不行了,侥幸过了最短路的构造题,写的时候也是不顺利,构造也确实没怎么练过。
E题就是个给你从1出发的最短路的结果,要求你给出图的构造,这种反向题目还真没仔细思考过。
此外特殊的是本题是无向图且所有边权为1,边权为1应该联想bfs,然后想到bfs根据到出发点的距离将图分为层,所以我们可以构造一棵树,每个点的到根的路径唯一,最短路就是深度。
做法:题目给定了边的数量m,考虑合法范围内的m的下界就是n-1个点,上界呢?
思考哪些边加了也不会影响最短路
1.同层的点相互连边
2.距离为1的点的相互连边
可以提前算出来m的最大值,然后把m过大的情况判掉。
对于合法情况:我们保证把建树的边用掉,剩余多出来的边从上面两类中不断加,直到总边数==m
F题思考了很久才出公式,但其实不是很难,就是个组合数学,一开始题目读假了读成了求总和了,算的复杂度怎么都不对。这也警示我们应该好好读题。
链接:https://ac.nowcoder.com/acm/contest/76133/G
来源:牛客网
小红定义一个数组的权值为:数组所有元素乘积的因子数量。例如,[1,2,3]的权值为 4。
现在小红拿到了一个数组,她想求出数组中所有非空子序列的权值之和。你能帮帮她吗?由于答案过大,请对$10^9+7$取模。
定义数组的子序列为:从左到右选择若干个元素(可以不连续)组成的数组,例如[1,2,3,2]的子序列有[2,2]等。因此,一个大小为$n$的数组有恰好$2^n-1$个子序列。
首先我们必须从答案贡献的角度入手,直接一个一个算复杂度根本不允许,我们看可能有多少个答案出现,每个答案贡献多少次,对于一个数的因子的数量我们知道质因数分解的等比求和再相乘的公式就可以做。
首先注意到1没贡献,在每个答案里,1都可有可无,所以2的cnt1的次方的方案。在这个基础上,就是在cnt2个2中选x个2,3也是同理,经典的组合数,根据答案范围我们只需要预处理阶乘和阶乘的逆元就可以快速求comb。
debug:最后要把空集剪掉,因为这个导致没能ak,可惜。。。。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 爱飞鱼的blog!