仙鹤要吃鱼
仙鹤要吃鱼
全部文章
分类
归档
标签
去牛客网
登录
/
注册
仙鹤要吃鱼的博客
全部文章
(共10篇)
题解 | 被打乱的异或和
过个年太吵了,今天才回归正轨。一般思路即可通关,每个元素都考虑一次,计算其他所有元素的异或判断是否相等即可。可以通过旋转队列实现 from collections import deque T = int(input()) for _ in range(T): n = int(input(...
2026-02-28
0
25
题解 | 相邻的糖果
用add维护窗口的总和,每次尽量从窗口最右边的盒子减少,如果不够,就继续往左移,直到满足要求,用res记录操作的次数虽然比较麻烦,但也是比较神秘地通关了 n,m,x = map(int,input().split()) a = list(map(int,input().split())) + [0]...
2026-02-07
0
35
题解 | 躲藏
原来这就是状态转移的运用吗,受教了 import sys mod = 2000120420010122 for s in sys.stdin: s = s.lower() c = cw = cwb = cwbc = 0 for i in s: if i == ...
2026-02-03
0
27
题解 | 小红的好排列
这涉及数学的排列组合,首先,我们知道,两数只要有一个数是三的倍数,那么他们的积也是3的倍数 分为两种情况,当n = 2时是绝对不能满足条件的 当n是大于2的偶数,是3的倍数数字的个数和是3倍数位置的个数错开是完全可以大于总数的一半的 对于第二种情况,我们使用排列组合,先考虑3倍数重叠部分,再考...
2026-02-01
0
34
题解 | 特殊的科学计数法
直接使用语法转成科学计数法会因为数据过大而无法通过评测,所以我们取前三位研究。 系数部分根据四舍五入分为进位和不进位两种情况,指数部分只需要根据系数部分的两种情况,结合字符串长度计算即可得到。 n = input() # 初始化待处理的系数 l = int(n[:3]) + 5 if l &g...
2026-01-31
1
42
题解 | 小红的gcd
首先我们要知道gcd(a,b)的意思是a和b的最大公约数,每次操作,都会将两个数变小。 因为可以操作无限次,所以我们要操作到整个数组不能继续变小的情况为止。 经过简单的想象,这种情况就是数组每个数都相等的情况,这个相等的数字就是全局最大公约数。 所以,我们只需要算出全局公约数在乘以n即可。...
2026-01-30
0
55
题解 | 计数
对于每一个连续0区间,我们都可以单独算出它们的种数,通过累乘每个区间的种数即可算出结果。那么,如何计算每个区间的种数?这需要两个数据,一个是满足该区间条件的数字个数w,一个是该区间0的个数h:我们用隔板法,假设有i个隔板,就有i+1个数字要填,通过排列组合,算出隔板放置组合有多少种,不同数字组合有多...
2026-01-30
0
43
题解 | 音符
通过前缀和来记录演奏到第i个音符的总消耗,因为消耗是从0开始算,所以应该使用二分法查找刚好大于所查询节点的下标,又因为音符排列是从一开始算,所以将查找到的下标+1进行输出,即可完成一次查询 # 导入二分查找的bisect函数,该函数返回刚好大于某个数的下标 from bisect import bi...
2026-01-26
0
39
题解 | 二进制不同位数
比较两个二进制位是否相同,可以用异或计算,得到新的二进制数,不同就为1,相同就为0,然后直接计算有多少个1就行了,也就是把所有1加起来 m,n = map(int,input().split()) x = format(m ^ n,"b") print(sum(map(int,x...
2026-01-22
0
42
题解 | 小红的三带一
n = int(input()) arr = list(map(int, input().split())) count = 0 i = 0 from collections import Counter while i <= n - 4: window = arr[i : i...
2025-12-12
0
34