浅谈斜率优化 概论 列出状态转移方程,如果能化简为以下的形式: \[dp[i]=\min/\max(c[i]+d[j]+C) \]此时我们就可以利用单调队列优化从做 \(O(n^2)\) 到 \(O(n)\) 的复杂度。 现在考虑更一般的情况,如果化简为以下形式: \[dp[i]=\min/\max ...
旅行商问题是确定一系列城市间最短旅行路线,属NP困难问题,穷举搜索很慢,最快算法也只能找到近似解,其决策问题是NP完全问题。 ...
从日程安排到区间合并:探索合并区间问题 生活中的算法 想象你是一位活动策划师,桌上摆着许多便利贴,每张写着不同的活动时间段:9:00-11:00的晨会、10:30-12:00的培训、14:00-16:00的项目汇报、15:00-17:00的团队建设...有些活动时间明显重叠了,为了让日程更清晰,你需 ...
一、 题目描述 给定你一个长度为 n 的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在 1∼10^9 范围内),表示整个数列。 输出格式 输出共一行,包含 n 个整数,表示排 ...
从股市走势到动态规划:探索最大子数组和问题 生活中的算法 想象你是一位股票交易员,手上有一支股票的每日涨跌数据。你想找出哪段连续的交易日能获得最大的收益。如果某天股票上涨5元,我们记为+5,下跌3元记为-3。找出总和最大的一段连续交易日,就是在寻找最大子数组和。 这个问题在现实生活中很常见。比如分析 ...
1. 人工智能现身 1.1. 在20世纪四五十年代,计算机在本质上被看成一种快速计算器 1.1.1. 主机一个接一个地运行大量的数据处理作业(job),不与用户发生交互 1.1.2. 最终的大量打印结果由操作员按批次(batch)展示给他们心怀感激的客户 1.2. 在工业级算术的扩张过程中,个别有远 ...
1. 天气预报 1.1. 自古以来,生命就与变幻莫测的天气息息相关 1.1.1. 在很多情况下,只要能提前一天得知天气情况,人类就可以避免灭顶之灾 1.1.2. 公元前2000年,准确预测天气是众神的特权 1.2. 大约在公元前650年,巴比伦人曾尝试通过观察云的形成来更精确地预测天气 1.3. 在 ...
一、 题目描述 给定你一个长度为 n 的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在 1∼10^9 范围内),表示整个数列。 输出格式 输出共一行,包含 n 个整数,表示排 ...
计算机发展历经机械计算、巴贝奇差分机与分析机设想,图灵提出图灵机与算法定义,楚泽、艾肯等推动初代计算机研发,最终诞生通用数字计算机。 ...
1. 不断扩展的圆圈 1.1. 哥贝克力石阵 1.1.1. 哥贝克力石阵令人印象深刻,但它真正的不同寻常之处在于其建造年代 1.1.2. 该遗址可追溯到公元前10000年至公元前8000年,远远早于古苏美尔 1.1.3. 成为世界上已知的最古老的巨石遗址 1.2. 圆的根本特征是从中心点到边缘的距离 ...
题目大意 详细题目传送门 一个长为 \(n\) 的序列 \(a\),有 \(m\) 次操作 把区间 \([l,r]\) 中大于 \(x\) 的数减去 \(x\)。 查询区间 \([l,r]\) 中 \(x\) 的出现次数。 \(1\le n\le 10^6\),\(1\le m\le 5\times ...
苏美尔文字起源于湿黏土陶筹,楔形文字记录了苏美尔语,促进社会发展。阿卡德、巴比伦帝国相继统治,文字变迁。19世纪欧洲考古学家破译文字。美索不达米亚算法复杂,包括六十进制和毕达哥拉斯定理。埃及数学留存少,欧几里得算法著名。 ...
算法是解决问题的步骤或规则,起源于阿拉伯数学家名字。算法广泛应用于计算和信息处理,包括插入排序、快速排序等。计算机通过程序执行算法,算法让生活更易,增进对宇宙理解。 ...
数组 1. 二分查找 题目 力扣题目链接 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = ...
题目大意 详细题目传送门 求有多少个 \(n\) 位数 \(v=\overline{a_1a_2\cdots a_n}\) 满足每一位都小于等于右边的下一位,且有给出 \(p\) 使 \(v|p\)。 \(n\leq10^{18},p\leq500\) 思路 注意到 \(n\) 很大,但 \(p\) ...
Preface 作为一名半退役选手,个人感觉本场难度不是太大,感觉和去年比难度貌似是下降了。在打的时候实在是由于乱七八糟的原因(包括不限于眼瞎,眼瞎,还有眼瞎),打得一般般。 感觉本场模拟题偏多,实在是吃屎。 我会在代码一些有必要的地方加上注释,签到题可能一般就不会写了. 以下是代码火车头: #in ...
Question 01 [P3374 树状数组一] 模板题 Code #include<bits/stdc++.h> using namespace std; const int N=5e5+7; class Tree{ public: inline void scan(long long *_da ...
元方树。 下文除特殊强调外,所有图皆为无向图。 引入 割点:在图中,删除某个点后,导致图不再连通的点。 点双连通:在一张图中,取两个点 \(u\)、\(v\),无论删去哪个点(除 \(u\)、\(v\) 自身外),\(u\)、\(v\) 都能连通,我们就说 \(u\) 和 \(v\) 点双连通。 点 ...
假定原点为圆心。 我们只考虑点在第一象限的情况,剩下的情况同理。 因为圆心是原点,所以在圆内的点的横坐标一定在 \(r\) 之内。 枚举点的横坐标 \(x + \frac{1}{2}\),二分最大的 \(y + \frac{1}{2}\),使得点 \((x + \frac{1}{2}, y + \f ...
优雅的暴力。 引入 link。 这道题显然可以用线段树、树状数组做,但如果我偏不用这些数据结构呢? 我们知道,暴力修改和查询最坏是 \(\mathcal{O}(n)\) 的,这样肯定会挂掉。 那该怎么办呢? 正题 分块 考虑将序列分成若干块,我们设每块长为 \(B\)。 对于每次查询 \(\left ...