【题解】牛客CSP-J入门组赛前集训营3

有趣的游戏

对于100分算法

按照题目的意思直接模拟,扫一遍数组,如果字符串有或者字符串中的个数大于的个数就输出,否则输出
时间复杂度为字符串长度

幸运数字

对于20分

对于小的数据,我们很简单的可以利用去解决,代表放了个数字,它的和为,余数为。于是我们可以转移到的时候统计答案。
其实这个时候我们可以用一个常见的小优化,也就是记忆化将分数提高到分。

对于100分

我们可以利用解决,代表数码和为,余数为的数字个数,于是我们转移方程为。输出即可。

拯救地球

对于20分算法

直接对于每个任务暴力搜索
时间复杂度

对于另外20分算法

将外星生物看成每条道路的边权,将国家看成点后,我们发现边权很小,于是我们可以对于~中的每个权值建立一张图,保证第张图中的边在原图中的边权小于等于.然后对于每张图都预处理出来每个点最多能拯救多少个点,于是每个任务的答案都被处理出来了.
时间复杂度

对于再另外20分算法

将任务看成询问,先让询问按照从小到大排序,然后从出发,把周围的边全部存进一个优先队列中,优先队列按边权从小到大排序,然后扫一遍询问,如果当前询问的大于等于优先队列的队首,那么弹出队首,然后把这条边周围的未被标记的边标记并加入优先队列,当无法弹出队首时,此时访问过的点数就为此次询问的答案
时间复杂度

对于100分算法

将任务看成询问,我们把边和询问按照从小到大排序,然后扫一遍,扫的同时加边建图,然后用并查集维护加边操作和联通块大小
时间复杂度

兔纸的公司

题外话

我想了很多种水法,都没办法水到比较高的分数。
前几个点造的都很水,所以应该都能水到。
后面几个点我并没有想到特别好的水法,想到的一些水法也并没有办法水到分,所以出题人实在不知道该如何卡水法,加强数据,只能恭喜能水到分的同学。

题目大意

给定一棵有根树,根为 ,每个点有个权值
除了根之外,都有一个父节点,且最多只有一个孩子节点。
可以进行若干次这样的操作:将 减1,将 加1,然后交换 的权值即 的父节点。
询问最终是否有可能让这颗树形成一个大根堆,即父节点大于等于孩子节点。

对于10%的数据

只有 ,那么树只有2中形态,可以分类讨论一下。
题外:抱歉QAQ,没想到一些同学辛辛苦苦写了分类讨论结果没开ll的情况,第一档数据我是卡了int的...

对于20%的数据

各种暴力爆搜乱搞

对于另外10%的数据

可以注意到在篡位的过程中是有不变量的,即 始终是不变的。 的深度。
对于 爬到 深度减少了,权值也减少了, 换到 深度增加了,权值也增加了。因此 始终是不变的。
那么设
可以发现我们可以交换树上任意两个点的 而不改变其他点的 。因为孩子与父亲换和父亲与孩子换是等价的,我们只需要将 沿 路径不断交换,再将 沿 路径不断交换,就可以实现任意两个点的交换。
既然如此,我们可以将题目看成是将 这些数填在树上。
我们将 从大到小排序,然后依次从根往下填。
但注意到虽然 满足了大根堆,但 不一定满足大根堆。
如果想让 满足大根堆,需要满足父节点的 严格大于子节点的
证明:
因此题目变成 将 填入树内且父节点严格大于孩子节点。
由于这个部分分满足树是一条链,因此只要 互不相同,就可以满足父节点严格大于孩子节点的条件。
因为 可以预处理出 暴力枚举两个数看是否相等。

对于再另外20%的数据

在上一个部分分的基础上,我们可以利用 的时间内判断是否有两个数相等。

对于剩余的50%的数据

对于不是链的情况,我们可以将最大的 填在根节点,然后把根节点删去,那么最大的 只能有一个。
删去根节点后会形成若干条链,那么 就可以有相同的数,因为可以填在两条不同的链中。
那么只要让每一条链中的数都互不相同,然后对于每一条链单独的排序一下,就可以满足题目要求。
我们可以将 离散化一下,然后记 中出现的次数。
贪心的想, 越大的要更早处理,因为越前,链的条数就更多,我们发现支链数越多,就会越优,因此我们将 从大到小排序,依次处理,维护每条链目前的剩余空位,以及链的条数。
那么我们每次贪心的将这些数放在链空位最多的链上,这个过程可以用优先队列来实现。
由于 所以总的效率是

std:

T1:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41573913
T2:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41573894
T3:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41573921
T4:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41574017

全部评论
...............
1 回复 分享
发布于 2019-11-03 20:18

相关推荐

点赞 评论 收藏
分享
评论
8
5
分享

创作者周榜

更多
正在热议
更多
# 听劝,这个简历怎么改 #
14086次浏览 182人参与
# 面试被问“你的缺点是什么?”怎么答 #
6359次浏览 98人参与
# 水滴春招 #
16391次浏览 346人参与
# 入职第四天,心情怎么样 #
11310次浏览 63人参与
# 租房找室友 #
8021次浏览 53人参与
# 读研or工作,哪个性价比更高? #
26152次浏览 356人参与
# 职场新人生存指南 #
199211次浏览 5509人参与
# 参加完秋招的机械人,还参加春招吗? #
26977次浏览 276人参与
# 文科生还参加今年的春招吗 #
4108次浏览 31人参与
# 简历无回复,你会继续海投还是优化再投? #
48624次浏览 561人参与
# 你见过最离谱的招聘要求是什么? #
144719次浏览 829人参与
# 如果重来一次你还会读研吗 #
155716次浏览 1706人参与
# 机械人选offer,最看重什么? #
69077次浏览 449人参与
# 选择和努力,哪个更重要? #
44292次浏览 493人参与
# 如果再来一次,你还会学硬件吗 #
103645次浏览 1245人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
20520次浏览 413人参与
# 招聘要求与实际实习内容不符怎么办 #
46727次浏览 494人参与
# 22届毕业,是读研还是拿外包offer先苟着 #
4652次浏览 27人参与
# 你们的毕业论文什么进度了 #
901248次浏览 8961人参与
# 软开人,你觉得应届生多少薪资才算合理? #
81375次浏览 496人参与
# 国企还是互联网,你怎么选? #
109191次浏览 853人参与
牛客网
牛客企业服务