10.18【A】

余数求和

对n中,大于k的部分,结果都是k

小于k的部分,不知道有什么规律,可能就是遍历?

不出意外的超时了,就是在小于k的部分,加和应该有规律可循

AI题解

这个向下取整k/i就是k与i做除法后的商

但是时间复杂度优化在哪里呢,原来对前半部分是直接求k与i的模,现在是转成了k与i的商,并且还要再乘i

原来复杂度是o(n),现在虽然没后半部分,复杂度是o(min(n,k))

所以在实现时,还要用到数论分块

数论分块

针对为什么有O(根号k)种取值的推导,对情况1和情况2的结果数量,最终不该是加和的关系吗?即i<=k,然后根号k只是i取值范围中的一点,分出了前后两部分,前部分因为i不超过根号k,所以最终结果不超过根号k

对于情况2,由放缩也知道最终结果数不超过根号k个,那加起来最多就是两倍根号k

所以这里说的是一个级别,级别是O(根号k)

DEBUG

1569

目前想的是,对于每个节点,其紧邻子节点的相对插入位置是可以互相调换的,

对于3,4,5,1,2的情况

3的紧邻子节点是1和4,那么1和4必须在3之后,但其出现的相对顺序可变

就是说每个节点,必须保证其比它的父节点出现的晚,但是和它的兄弟节点之间的相对关系可变

但这如何用在方案数的求解上?

AI题解

就是说左右子节点的交错,靠组合数来处理

对于紧邻层的子节点,不考虑子树内部节点是如何排序的情况数,而是靠递归来保证每层合法

每一层只需要计算其子树上所有节点在当前看上去整体内部的一个出现顺序

组合数计算

如何C++实现组合数的计算公式?

DEBUG

4083

貌似只有相同值之间的异或才会为0,所以问题实际是在问把原数组变成无相同元素后的数组,需要删掉几个元素

但也不是,比如第二个示例,就不用把相同的4全都删掉

应该是删减连续的相同数据块

相关推荐
GoAI2 小时前
DeepSeek Harness Memory (一)主流记忆插件总结
后端·算法·面试
Pniubi3 小时前
力扣54.螺旋矩阵
算法·leetcode·矩阵
choumou_M5 小时前
算法_1:由浅入深学习快速排序QuickSort
学习·算法·排序算法
Coder_Shenshen6 小时前
罗克韦尔ACD工程归档离线变量树解析
算法·c#
心仪久了会沦陷8 小时前
C语言数据结构入门——树与二叉树详解:概念、堆实现与链式遍历
c语言·数据结构·算法
小此方8 小时前
[算法实战论:动态规划]背包问题概念,01不满背包问题,01满背包问题,背包问题的滚动数组空间优化
算法·动态规划
悠仁さん9 小时前
【C++】哈希表
c++·算法·散列表
地平线开发者9 小时前
点云算法整理与常用计算模块:从数据到模型,再到工程与量化
算法·自动驾驶
武子康12 小时前
H3-World 为何在加载 LoRA 前,先检查导入的代码?
人工智能·深度学习·算法