- 博客(6)
- 收藏
- 关注
原创 牛客周赛Round39(B - E)
a[i]%p之后,她一定就是小于p得了。那么我们 就可以初始化dp数组 - dp[a[i]] = 1。dp[ne] = min(dp[ne],dp[j]+1). -- 在满足j的条件下 我只需要在数组中多选一个a[i]就行了。对于模完p的每一个a[i],它可能通过一步走到的数的范围在(a[i] + (0 ~ p))%p。nex(可能到达的点)= (a[i]+(0~p))%p。在有限的数中选择一些数,他们满足加起来的和是p的倍数。所以对于每个数,我们不妨先%p,对答案无影响,算数范围还更少。
2024-04-07 23:13:20
747
1
原创 小白月赛90 :D、E
可以看到本题m的数据范围在10以内,所以我们可以通过dfs来枚举出所有线段的组合情况,而要判断我们选择的线段是否能将所有的点覆盖至少两次.可以通过差分数组求前缀来判断..那么是否会超时呢?,10个线段就是1024,然后判断数组需要O(n),也就是10的五次方,O(m*n) = 1024 * 10 ^ 5不超1e9 可以接受.对于每一条线段,我们有选或者不选两种状态,那么设置一个use数组判断这个线段选了没有.然后通过构造差分数组来对左右端点操作.赛时写的dfs超时了,以此记录一下自己错误的思路>>
2024-04-06 17:51:15
362
1
原创 深搜刷题记录
那么我们首先需要找到入度为0的点,让他入队 通过他去增加与他连接着的消费者的sum值,然后将那些与他连接着的点的入度-1,如果为0的话 让他也入队 让他当作新的起始点去更新他的消费者的sum值。观看此题:要找的是最左端是不会捕捉其他生物的生产者,最右端是不会被其他生物捕捉的最厉害的消费者,所以跟一个点的入度和出度有关 考虑拓扑排序 需要借助队列来实现。搜索到没有满足条件的点时 说明他的周围已经没有比他还大的点了 那么只需要取他的周围点的最大值加1就是他的最大值 (回溯的时候更新值)2.搜索到结果时的判定。
2024-03-22 16:59:07
491
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人