2020算法竞赛网络赛补题于2020/7/26

很遗憾,爆零
接着的百度之星也以微小的差距没能晋级(去年还晋级了的啊)
队友给我的定位非常准确,比赛是要打,但是基础的算法必须要掌握牢固才行,否则打再多的比赛也达不到区域赛实力
先补题

A

很显然的是迷宫题,而且看出来是BFS
然而BFS本身写不出(基本功啊喂),我想如果上次校赛那题学会了的话,说不定可以写出来。
考点:BFS
难点:输入非常恶心,在输入两个整数之后的换行符,要记得用一个cin.getline()读掉。
标程:
当然题目里面没有说是两个入口,可以对每个入口都进行一次BFS

B

猜测是一道DP题
题解确实是树形DP
考点:树形DP
虽然看起来考点是还没有接触到的,但是解题率很高,说明入门之后并不难写。

C

初看这道题,真的是无法想象竟然有不是顺序做的方法。可能注意力都放在公式上面,没想到真正的答案已经给出来,要做的是从后往前递推。
考点:思维
注意到判断输入结束的技巧:
while(~scanf()),利用后一个答案,依次向前推,最后顺序输出即可
难点:如果想从正面顺序推答案,不可避免地要依次尝试i,时间复杂度为O(n^2),但是反过来就是O(n),下次遇到公式题,首先尝试化简,推导。

D

查询第几小的数
很显然是数据结构的问题
考点:数据结构-双顶堆
比赛中想到的是优先队列,很遗憾超时了,后来改成快排也是一样,复杂度O(n^2*logn)。
题解使用的是堆
最大堆:结点的键值小于等于父节点的键值
最小堆:结点的键值大于等于父节点的键值
当然其实用两个优先队列也是一样
难点:把一下子处理所有的数据,转换成分别处理,尤其是要意识到,所有里面的第k大=所有里面最小的k个里最大的那个。
这个技巧叫做:双顶堆
似乎有个相关题leetcode295

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值