ICode9

精准搜索请尝试: 精确搜索
  • 线段树2022-08-15 13:30:46

    线段树学习笔记 1. 线段树简介 线段树,是一种二叉搜索树,其每一个节点表示了一段区间。 线段树支持的操作有: 区间求 和 或 最大/最小值,时间复杂度 \(O(logN)\)(p.s.后面代码均以求和为例) 有同学说:“这还不简单?我用前缀和 O(1) 就能做,要他干什么?” 不要着急,因为线段树还有这个功

  • python | split函数时间复杂度2022-08-15 11:02:01

    源码 while (maxcount-- > 0) { while (i < str_len && STRINGLIB_ISSPACE(str[i])) i++; if (i == str_len) break; j = i; i++; while (i < str_len && !STRINGLIB_ISSPACE(str[i])) i++;是O(n)感谢:https://stack

  • 循环语句2022-08-14 22:04:46

    循环的概念 重复的执行一段的代码,避免死循环,提高效率 (时间复杂度(关注) 空间复杂度(不关注)) 三大循环语句:while语句 do while 语句 for语句 循环三要素 初始值(初始的变量值) 迭代量(基于初始值的改变) 条件(基于初始值的判断)   while语句 while (表达式(会被强制转换为布尔类型)){

  • 洛谷 P6789 - 寒妖王(子集卷积+矩阵树定理)2022-08-14 19:30:24

    洛谷题面传送门 像极了我验的那道牛客多校(第六场 C Forest)…… 考虑对于每条边,计算其在最大生成基环森林中的概率,乘以边权求和就是答案。现在问题在于如何计算每条边在最大生成基环森林中的概率,显然比它权值小(如果权值相同则比较编号)的那些边存不存在不影响这条边是否在最大生成基

  • 【杂题乱写】AtCoder dp 26题2022-08-14 15:02:05

    AtCoder dp 26题 原比赛链接 洛谷题单链接 A - Frog 1 题目已然给出了转移方程,设 \(dp_i\) 为到第 \(i\) 块石头的最小代价。 转移方程: \[dp_i=\min(dp_{i-1}+|h_i-h_{i-1}|,dp_{i-2}+|h_i-h_{i-2}|) \]时间复杂度:\(O(n)\) 点击查看代码 int n; int h[maxn],dp[maxn]; int main()

  • 分 块 套 娃2022-08-13 20:30:24

    众所周知, 如果我们用正常的分块做单点加区间求和, 时间复杂度高达 \(O(1)-O(n^{1/2})\) (修改-询问). 然后你发现这太慢了. 于是你考虑改一下分块的大小. 我们更改块的大小为 \(n^{2/3}\), 整块的复杂度成功变成了 \(O(n^{1/3})\)! 但是散块的复杂度变成了 \(O(n^{2/3})\), 成功

  • [2011年NOIP普及组] 瑞士轮2022-08-13 14:36:08

    试题分析:这道题目考察的是排序与模拟,题目要求明确,我们只需要模拟出来即可,我们需要对分数进行排序,而sort的时间复杂度为o(logn),所以会超时,所以我们选择归并,归并的时间复杂度为o(n),这里我用了<algorithm>中自带的merge函数。 代码如下:  

  • NC20242 [SCOI2005]最大子矩阵2022-08-12 03:00:37

    题目链接 题目 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。 注意:选出的k个子矩阵 不能相互重叠。 输入描述 第一行为n,m,k(1 ≤ n ≤ 100,1 ≤ m ≤ 2,1 ≤ k ≤ 10), 接下来n行描述矩阵每行中的每个元素的分值(每个元素的分值的绝对值不超过

  • 一些杂项算法2022-08-10 20:33:01

    KMP 代码实现 时间复杂度\(O(n + m)\) int n, m; int next[M + 1], f[N + 1]; char s[N + 2], p[M + 2]; void kmp() { n = strlen(s + 1), m = strlen(p + 1); int j = 0; nxt[1] = 0; for (int i = 2; i <= m; i++) { while (j > 0 && p[j

  • 洛谷 P6668 - [清华集训2016] 连通子树(虚树+点分治)2022-08-10 20:31:05

    洛谷题面传送门 一道思维难度为 \(<\epsilon\) 的题。 首先先考虑单组询问的情况。有个究极暴力的做法,\(dp_{i,x,y,z}\) 表示 \(i\) 子树内三种颜色个数分别为 \(x,y,z\) 的连通块个数,转移相当于合并两个连通块,只能 \(O((na+1)^2(nb+1)^2(nc+1)^2)\) 地进行,因此单组询问复杂度 \(n

  • 排序相关2022-08-10 15:30:08

    对于排序,绝大部分情况一发 \(sort\) 完事 这里记录一下不太常用的排序方法 冒泡排序 流程:每次扫描一遍数组,交换相邻两项,每次完成后确定一个数的位置 用途:冒泡排序多和逆序对、树状数组等结合,冒泡一次减少一个逆序对 复杂度:\(O(n^2);O(n)\) 再来通过例题理解一下冒泡排序的本质: P4

  • 洛谷 P2258 子矩阵2022-08-08 21:02:47

    前言 那个 Atcoder Beginner 263 的 E 还真是恶心…… 呃,我什么也没说,我什么也没说…… 正文 题意 有个 $ n \times m $ 的矩阵,从里面选 $ r $ 行 $ c $ 列出来。 问这 $ r $ 行 $ c $ 列的交叉点“相邻元素的差”的和最少为多少。 $ 60 pts $ 思路 直接暴力枚举。 先枚举 $ r $,再

  • 数据结构与算法-斐波拉契数列2022-08-08 10:03:12

    题目链接 斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。 斐波那契数列是一个满足 \(fib(x)= \begin{cases} 1 & \text{ if } x= 1,2\\ fib(x-1)+fib(x-2) & \text{ if } x>2 \end{cases}\) 的数列。 数据范围:\(1\le

  • Redis 定长队列的探索和实践2022-08-08 09:32:02

    vivo 互联网服务器团队 - Wang Zhi 一、业务背景 从技术的角度来说,技术方案的选型都是受限于实际的业务场景,都以解决实际业务场景为目标。 在我们的实际业务场景中,需要以游戏的维度收集和上报行为数据,考虑数据的量级,执行尽最大努力交付且允许数据的部分丢弃。 数据上报支持游戏

  • 第一章-绪论 2.算法的基本概念2022-08-06 17:55:43

    程序=数据结构+算法 算法的特性: 有穷性, 算法必须是有穷的,而程序可以是无穷的. 确定性, 相同输入得到相同输出. 可行性, 可以通过有限次的基本操作来实现. 输入, 有0个或多个输入. 输出, 有一个或多个输出. 好算法的特性 正确性. 可读性. 健壮性. 高效率与低存储需求.(即时间

  • STL堆排序&时间复杂度分析2022-08-06 12:43:54

    1. 逻辑&时间复杂度分析 pop 和 initialize 的时间复杂度请参考: [DSAAinC++] maxHBLT的合并&初始化&时间复杂度分析 将数组初始化为一棵 max heap, 时间复杂度为 \(O(n)\). max heap 的 root 必然是所有 node 中最大的. 排序就是利用这个性质, 将 max heap 的 root 不断 pop 出

  • 8个常见的机器学习算法的计算复杂度总结2022-08-05 11:05:08

    计算的复杂度是一个特定算法在运行时所消耗的计算资源(时间和空间)的度量。 计算复杂度又分为两类: 1、时间复杂度 时间复杂度不是测量一个算法或一段代码在某个机器或者条件下运行所花费的时间。时间复杂度一般指时间复杂性,时间复杂度是一个函数,它定性描述该算法的运行时间,允许我

  • 算法:数组中数字出现的次数2022-08-04 21:32:08

    问题 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 解决 //1、利用hashset的特性进行判断 class Solution { public int[] singleNumbers(int[] nums) { int len1=nums

  • K-D Tree2022-08-03 18:33:03

    \(K-D\) \(Tree\) 简述 \(K-D\) \(Tree\)是一种以二叉搜索树为结构,可以高效处理\(k\)维空间信息的数据结构,在处理\(k\)维数点问题上,最差情况下复杂度是\(θ(n \times n^{1 − \frac{1}{k}})\) 拿二维数点为例 \(n\)个二维平面上的点,\(m\)次询问一个二维范围上有多少个点 \((n≤10^

  • 【杜教筛小记】2022-08-03 08:31:08

    虽然挺简单的,但用的不多的话,挺容易忘。 问题模型: 给定一个数论函数\(f\),定义\(S_f(n)=\sum_{i=1}^nf(i)\) 要求在低于线性的时间复杂度求出\(S_f(n)\) 基本原理: 构造一个数论函数\(g\),令\(h=f*g\) 可以得到 \(S_f(n)=\frac{1}{g(1)}(S_h(n)-\sum_{i=2}^ng(i)S_f(\lfloor \frac{n}{

  • Multi-Party Threshold Private Set Intersection with Sublinear Communication-2021:解读2022-08-01 18:04:13

    记录阅读论文的笔记。 摘要 总结: (1)CRYPTO 2019:The Communication Complexity of Threshold Private Set Intersection-2019:解读提出任何阈值PSI得通信复杂度为\(\Omega(T)\);基于FHE的两方阈值PSI通信复杂度为\(O(T)\),但计算消耗很大么;基于GC的了;两方阈值PSI得通信复杂度为\(O(

  • P7447 [Ynoi2007] rgxsxrs 题解2022-08-01 11:32:06

    特别劝退的一道题目。 调了整整两天,码长 4.39kb -> 6.89kb 这道毒瘤题不仅卡时间,还卡空间。 题意 给定一个长为 \(n\) 的序列 \(a\),需要实现 \(m\) 次操作: 1 l r x:表示将区间 \([l,r]\) 中所有 \(>x\) 的元素减去 \(x\)。 2 l r:表示询问区间 \([l,r]\) 的和,最小值,最大值。 思路 一

  • [2022牛客多校赛第四场] C-Easy Counting Problem2022-07-31 18:00:08

    题目大意 统计长度为\(n\)且数位\(i\)出现至少\(c_i\)次的数字串数量。 \(i\in[0,w)\) \((2\leq w\leq 10)\) \(1\leq c_i\leq 50000,\sum c_i\leq 50000\) \(q (1\leq q\leq 300)\) 次询问,每次询问 \(n (1\leq n\leq 10^7)\) 题解 若 \(i\) 恰好出现 \(c_i\) 次,且 \(n=\sum c_i\)

  • 2022.7.31 多校周报2022-07-30 22:32:32

    总结 牛客第三场 C 开局的一道签到题,其实在差不多10分钟的时候已经写好代码准备交了。但队友注意到了题目底下的提示,“如果复杂度是 \(O(|S|\log |S|)\) 最好不要交,复杂度最好不要超过线性复杂度” ,就不敢继续交。实际上我们代码是 \(O(|S|\log n)\) ,注意一下常数是完全能过的,在后

  • 递归未必是好事2022-07-30 13:34:50

    递归的写法 第一种写法—朴素DFS求解 时间复杂度O(2^n) int fib(long long x) { if(x==1) return 1; if (x==2) return 1; return fib(x-1)+ fib(x-2); } 递归写法的劣势在于计算到第40个之后速度就会肉眼可见的十分慢 线性递推解法(动态规划)—时间复杂度(O(n)) #inclu

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有