刷新
动态规划——带权二分优化DP 学习笔记

博主头像 动态规划——带权二分优化DP 学习笔记 引入 带权二分其实并不一定用于优化 DP,也可能用于优化贪心等最优化的算法。 带权二分也叫 WQS 二分,最初由王钦石在他的 2012 年国家集训队论文中提出。 定义 使用情况 要解决一个最优化问题(求最大 / 最小值) 有一个限制,一般是某个参数要求一定恰好 ...

力扣刷题笔记-08 字符串转整数

博主头像 08 字符串转整数 属于对字符串进行操作的问题 百无一用是情深 问题 字符串里有数字,空格,正负号等,需要先过滤出来 在这道题目里,我们通常考虑字符串的组合是 “空格+正负号+数字”,一开始我想可能是“正负号+空格+数字”,但是这样的组合根本不可能是数字啊,没什么意义。 循环条件 for循环 字符串 ...

力扣刷题笔记-07 整数反转

博主头像 07 整数反转 狗看了都摇头的年纪,纯爱战士一败涂地。 怎么反转 temp用来保存个位数 res用来保存当前结果 123,取模运算,这样就可以获得最后一位。比如对123%10,得到temp=3. 判断res是不是溢出(重点) 如果没有溢出,res扩大十倍,再加上个位数,就相当于是反转了。res = ...

AtCoder Beginner Contest 323

博主头像 有的人边上课边打abc A - Weak Beats (abc323 A) 题目大意 给定一个\(01\)字符串,问偶数位(从\(1\)开始) 是否全为\(0\)。 解题思路 遍历判断即可。 神奇的代码 #include <bits/stdc++.h> using namespace std; us ...

算法性能分析

博主头像 1.究竟什么是时间复杂度 时间复杂度是一个函数,它定性描述该算法的运行时间。假设算法的问题规模为n,那么操作单元数量便用函数f(n)来表示,随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,这称作为算法的渐近时间复杂度,简称时间复杂度,记为 O(f(n)) 2.什么是大O 算法导论给 ...

快速选择

博主头像 一、算法描述 在我们求一组元素的第\(K\)大值或者前\(K\)大值时,可能最先想到的是对元素进行排序,然后选择第\(K\)大的或者前\(K\)大的值。 不过我们只是想取第\(K\)大的数,有必要将整组元素进行排序吗?当然不必,这就是我们将要介绍的快速选择算法,其时间复杂度可以达到\(O(n)\)。 ...

快速排序

博主头像 一、算法描述 快速排序算法是对冒泡排序算法的一种改进算法,在当前所有内部排序算法中,快速排序算法被认为是最好的排序算法之一。 快速排序的基本思想: 通过一趟排序将待排序的序列分割为左右两个子序列,左边的子序列中所有数据都比右边子序列中的数据小,然后对左右两个子序列继续进行排序,直到整个序列有序。 思 ...

【数据结构】3.跳表和散列

博主头像 1.顺序链表字典 1.1字典抽象父类 #pragma once using namespace std; template<class K, class E> class dictionary { public: virtual ~dictionary() {} // 返回字典是否为空 virtua ...

【数据结构】2.栈和队列

博主头像 1.栈 1.1栈的抽象父类 #pragma once template<class T> class Stack { public: // 析构函数 virtual ~Stack() {} // 栈是否为空 virtual bool empty() const = 0; // 栈的大小 virtua ...

【学习笔记】set & multiset

博主头像 PS:本文仅起一个备忘的作用。 set set 指的是有序的不可重集,与数学上的定义类似。 常用操作: p.insert(x):在 \(p\) 中插入 \(x\),若 \(p\) 中已有 \(x\) 则返回 false,否则返回 true p.erase(x):在 \(p\) 中删除值为 \(x\) ...

AtCoder Beginner Contest 322

博主头像 A - First ABC 2 (abc322 A) 题目大意 给定一个字符串,找到最先出现ABC的位置。 解题思路 直接查找判断即可。 神奇的代码 #include <bits/stdc++.h> using namespace std; using LL = long long; int mai ...

12.割地取田

先梳理这道题的过程:尝试这个矩阵的所有可行取法,然后选择其中sum最大的一种。 这道题应该属于回溯法的范畴,我使用了一个递归函数search,这个search本质上是一种dfs方法。 首先需要两个数组:vl[8][8](vl表示value,存放每个田地的预期产出)和av[8][8](av表示avai ...

Kubernetes基础结构介绍

博主头像 Kubernetes基础结构介绍Kubernetes的基础结构由一系列组件组成,每个组件都有其特定的用途和意义。下面是对这些组件的详细介绍:Etcd:etcd是一个高可用的键值存储系统,用于保存Kubernetes集群的配置数据和状态信息。它是集群中所有组件之间通信的基础。 API Server:A ...

CF961E Tufurama 题解

博主头像 CF961E Tufurama 题解 二维数点做法 题意 给定长度为 \(n\) 的序列 \(a\),统计二元组 \((i,j)\) 的个数,使得该二元组满足 \(1 \leq i < j \leq n, a_i \geq j, a_j \geq i\)。\(n\) 在 \(2 \times 10^ ...

动态规划——斜率优化DP 学习笔记

博主头像 动态规划——斜率优化DP 适用情况 适用于求解最优解(最大、最小)问题。 可以将转移方程可以化为 \(\left[\begin{array}{rl} 仅与 \space i \space 有关 & 是我们想要最大/最小化的 \\ 仅与 \space j \space 有关 & 是已知的 \\ 与 \ ...

国庆NOIP储备营笔记

博主头像 Day1(基础算法) 讲师:余快 枚举法 例题1 给定一个数 \(x\),判断 \(x\) 是不是质数。 朴素算法:枚举 \([2,x-1]\) 之间所有的整数 \(i\),逐个判断 \(x\) 是否被 \(i\) 整除,若都不能整除则 \(x\) 是质数,时间复杂度 \(O(x)\),搞个 \(1 ...

基本技巧——根号分治 学习笔记

博主头像 基本技巧——根号分治 学习笔记 根号分治与其说是一个算法,更不如说是一种思想(trick)。 定义 根号分治,是一种对数据进行点分治的分治方式,它的作用是优化暴力算法;类似于分块,但应用范围比分块更广。 具体来说,对于所进行的操作,按照某个点 \(B\) 划分,分为大于 \(B\) 及小于 \(B\ ...

<1···141516···31>