YunBaichuan
YunBaichuan
全部文章
分类
归档
标签
去牛客网
登录
/
注册
YunBaichuan的博客
全部文章
(共66篇)
排序 + LIS(Python)
思路:排序 + LIS。他的本质是算一个二维最长严格递增子序列,然后再用小红本身的H和A,去判断是否能够战胜最大的二维严格递增子序列结尾。如果可以的话,就更新ans = max(ans, dp[i]),最终输出ans即可 注意:这里排序是为了贪心的得到更长的二维最长严格递增子序列,而且题目只限制了h...
2026-01-05
0
5
思维、构造(Python)
思路:思维题,首先有一个特判可以注意到:令k = n // 2,如果此时k是奇数,那么数组左边是奇数个偶数和,结果为偶数;数组右边是奇数个奇数和,结果为奇数。因此,左右两边的和不可能相等,直接输出"NO"即可 然后我们就可以往左边填偶数,从2开始填,形成一个等差数列,其求和公式为...
2026-01-04
0
9
划分dp(Python)
参考:https://www.nowcoder.com/share/jump/5537992501767403764056 思路:这题可以用划分dp来做,我们定义表示到使得数组为空的最小划分数,并且记录一个数组,用来记录元素值的最小划分次数。这样后续在进行首尾元素相同,状态转移的时候,就可以找到结尾...
2026-01-03
0
9
最大化最小值问题,二分(Python)
思路:非常经典的最大化最小值问题,用二分解决。不过题目没明确说明是最大化最小值,需要分析一下。如果没有学过这种二分题型的同学可以学习一下 代码: import sys input = lambda: sys.stdin.readline().strip() import math inf = 10...
2026-01-02
0
12
手搓二叉树,递归写遍历(Python)
思路:ACM赛制下就需要手搓一棵符合题目要求的二叉树了,没有接触过的同学可以练习一下,具体流程如下:1.写一个节点类;2.分别对各编号建立节点;3.读入边然后建二叉树,顺便存储一下边;4.通过入度为0,找到根节点编号,并取出根;5.用经典的递归来写三种遍历方式,输出结果即可,当然你也可以扩展一下,用...
2026-01-01
0
25
思维(Python)
思路:思维题,我们考虑一下不同次数操作,有什么影响。一次操作时可以把相邻的两个元素翻转,也就是距离为1的元素进行翻转,比如"11"变成"00";两次操作时,可以把距离为2的元素进行翻转,比如"101"变成"000";三次...
2025-12-31
0
16
并查集,离散化(Python)
思路:看到题目中提到了传递性,并且和点、边有关,首先要想到并查集。但直接用常规的连续并查集,对于1e9的点数量来说,会爆内存,因此我们需要在创建、使用并查集之前,对数据进行离散化操作 之后就是创建并查集,然后判断c为0的情况下,a和b是否已经合并过了。如果有的话,说明存在矛盾,输出"NO&...
2025-12-30
0
16
恰好不定长滑动窗口(Python)
思路:题目问的是在一个连续的区间[l, r]中恰好存在k个"01"子序列,这其实是一个恰好不定长滑动窗口问题。一般来说,如果要计算满足条件的连续区间个数,我们需要用两次不定长滑窗解决,也就是用<= k - <= k - 1 = k,即用两个至多逻辑得到恰好逻辑(用至少...
2025-12-29
0
22
分类讨论(Python)
思路:分类讨论,首先注意到操作1并不会改变x, y的值,所以说我们要使得x, y的值改变,得看操作2。因此,令操作2中的,得到,那当且仅当为0的时候成立。 由于我们操作1可以进行x, y的交换,所以说我们只需要考虑怎么得到0即可,有三种情况:1.原本里面就有0,那就不管,具体是x还是y,这个讨论一下...
2025-12-28
0
20
贪心,dfs(Python)
思路:首先要想到一个特判,那就是当节点n的个数为奇数时,必然不满足条件中的全偶数划分。然后就是贪心进行划分,什么意思?打个比方来说,我在4的时候进行划分,不如在2的时候就进行划分,这样就可以多一次划分,更优 所以说,我们可以统计子树大小,一旦遇到偶数就进行划分,这可以用递归dfs来做。具体来说,当我...
2025-12-27
0
20
首页
上一页
1
2
3
4
5
6
7
下一页
末页