算法programing dynamic动态

动态规划5.3-树形动态规划

一、树形动态规划 基于树这个数据结构的一类动态规划问题。那么如何判断一个题目是否属于树形动态规划类型,即判断数据结构是否为树以及是否符合动态规划的条件。 树形动态规划的特殊性:无环、\(DFS\) 不会重复,具有明显且严格的层级关系。 二、例题 1.[Daimayuan Online Judge.统 ......
动态 树形 5.3

扩展欧几里得算法

算法 阅读此篇前可先阅读欧几里得算法。 给定 \(a,b,s\),求 \(ax+by=s\) 的任意一组解。 证明: 由裴蜀定理得:二元一次方程 \(ax+by=c\) 的有解条件是 \(\gcd(a,b) \mid c\)。 由欧几里得算法得知 \(\gcd(a,b)=\gcd(b,a\mod b ......
算法

算法性能分析

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

文心一言 VS 讯飞星火 VS chatgpt (107)-- 算法导论10.1 5题

五、用go语言,栈插入和删除元素只能在同一端进行,队列的插入操作和删除操作分别在两端进行,与它们不同的,有一种双端队列(deque),其插入和删除操作都可以在两端进行。写出4个时间均为 O(1)的过程,分别实现在双端队列的两端插入和删除元素的操作,该队列是用一个数组实现的。 文心一言: 在 Go 语 ......
文心 导论 算法 chatgpt VS

算法异或的运用

题目描述 在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,…。 每一盏灯只有两种可能的状态,开或者关。如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。如果原来是开,将变成关。如果原来是关,将变成开。 在刚开始的时候,所有的灯都是关的。小明每次可以进行如下的操作: 指定两个数,a, ......
算法

算法之动态规划(DP)求解完全背包问题(状态转移式方程推导)

完全背包是01背包的进阶版。在这里补充一下代码随想录的完全背包状态转移式的推导。有兴趣的可以先看一看原版。 状态转移方程 状态:dp[i][j] 选择前i个物品,容量为j的背包时 所选物品价值总和最大。 状态转移: dp[i][j]=max(dp[i-1][j-k* v[i]]+k* w[i]) ( ......
方程 算法 背包 状态 动态

Nginx__高级进阶篇之LNMP动态网站环境部署

动态网站和LNMP(Linux+Nginx+MySQL+PHP)都是用于建立和运行 web 应用程序的技术。动态网站是通过服务器端脚本语言(如 PHP、Python、Ruby等)动态生成网页内容的网站。通过这种方式,动态网站可以根据用户的不同请求生成不同的网页。LNMP是一种服务器端技术组合,它使用 ......
环境 动态 Nginx 网站 LNMP

基础算法--字符串

\(KMP\) \(KMP\) 算法(Knuth-Morris-Pratt 算法)是一个著名的字符串匹配算法,效率很高,但是确实有点复杂。 基本概念 \(1\)、s[ ]是模式串,即比较长的字符串。 \(2\)、p[ ]是模板串,即比较短的字符串。(这样可能不严谨。。。) \(3\)、“非平凡前缀” ......
字符串 算法 字符 基础

C++算法之旅、08 基础篇 | 质数、约数

算法学习笔记,记录容易忘记的知识点和难题。试除法、分解质因数、筛质数、约数个数、约数之和、最大公约数 ......
约数 质数 算法 之旅 基础

文心一言 VS 讯飞星火 VS chatgpt (106)-- 算法导论10.1 4题

四、用go语言,重写 ENQUEUE 和 DEQUEUE 的代码,使之能处理队列的下溢和上溢。 文心一言: 在 Go 语言中,我们可以使用切片来实现队列。下面是如何实现 ENQUEUE 和 DEQUEUE 操作,同时处理队列的下溢和上溢的情况: package main import "fmt" t ......
文心 导论 算法 chatgpt VS

MyBatis动态SQL

MyBatis动态SQL 在项目的开发中,编码人员经常需要根据不同的条件拼接SQL语句。在组拼SQL语句的过程中除了实现核心功能以外还需要处处小心,时时警惕确保不遗漏必要的标点符号、空格以及关键字。 动态SQL常用标签如下: <if/> <where/> <choose/>、<when/>、<oth ......
MyBatis 动态 SQL

11_动态空间申请

动态空间申请 new和delete操作基本类型空间 new申请堆区空间, delete释放空间 int *p = NULL; p = new int; //从堆区申请int类型大小的空间 *p = 100; cout << "*p = " << *p << endl; //释放空间 delete p ......
空间申请 动态 空间 11

动态规划--DP

动态规划 动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 背包 01背包 每个物体只有两种可能的状态(取与不取),对应二进制中的 \(0\) 和 \(1\),这类问题便被称为「0-1 背包问题」。 状态转移方程: \[f_{i,j}=\max(f_{i-1,j},f_{i ......
动态 DP

2023 ICPC HIAST Collegiate Programming Contest

因为补题的时候,发现网上找不到一篇题解(补题补的很是痛苦),所以写了一篇,希望能帮助之后补这场比赛的人~~~ 有些太简单签到就没写,还有 \(2-3\) 题还没补出来,之后补了会加上去。 A. Gym Plates 解题思路 比较裸的一个状压 DP,我们考虑把数字的选取次数压到 DP 里面去,显然 ......
Programming Collegiate Contest HIAST 2023

【ACM算法】整数分块

思考如何计算以下算式: \[\sum_{i=1}^{n} \lfloor \frac{n}{i} \rfloor \qquad (n \le 10^6) \]所有人都会觉得这个非常简单,一个for循环可以直接解决,时间复杂度 \(O(n)\),但是如果将 \(n\) 的范围改大一点点,改成 \(n\ ......
整数 算法 ACM

合并区间(区间排序,vector的动态扩容的应用)

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[ ......
区间 动态 vector

10.5算法

对称二叉树给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3]输出:true示例 2: 输入:root = [1,2,2,null,3,null,3]输出:false 提示: 树中节点数目在范围 [1, 1000] 内-100 <= ......
算法 10.5 10

【知识点】如何找到正确的算法?

算法思路 一、多组查询 · 考虑如何利用已知信息避免重复查询。 · 考虑各种预处理,例如前缀和。 二、规模减小 · 考虑树、链等 三、以小见大 · 考虑特殊情况,并考虑以此为基础继续转移 四、模拟优化 · 考虑高维复杂度算法,并考虑尽可能优化 五、题面信息 · 数据规模 \[n≥10^8:O(\lo ......
知识点 算法 知识

【知识点】如何找到正确的算法?

# 算法思路 **一、多组查询** · 考虑如何利用已知信息避免重复查询。 · 考虑各种预处理,例如前缀和。 **二、规模减小** · 考虑树、链等 **三、以小见大** · 考虑特殊情况,并考虑以此为基础继续转移 **四、模拟优化** · 考虑高维复杂度算法,并考虑尽可能优化 **五、题面信息** ......
知识点 算法 知识

8.19 动态规划

动态规划 一.动态规划初步 1.硬币问题 B3635 硬币问题 需要依次枚举每种硬币能否应用的最大情况,设定用0个硬币时的初始值和一个硬币时的初始值(防止越界),后依次增加每个方案数; #include<bits/stdc++.h> using namespace std; long long dp ......
动态 8.19 19

8.19 动态规划

动态规划 一.动态规划初步 1.硬币问题 B3635 硬币问题 需要依次枚举每种硬币能否应用的最大情况,设定用0个硬币时的初始值和一个硬币时的初始值(防止越界),后依次增加每个方案数; #include<bits/stdc++.h> using namespace std; long long dp ......
动态 8.19 19

The 20th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple

题解: https://files.cnblogs.com/files/clrs97/2023_ZJCPC_Tutorial.pdf Code: A. Look and Say #include<bits/stdc++.h> using namespace std; int main() { ios ......

2023“钉耙编程”中国大学生算法设计超级联赛(3)

题解: https://files.cnblogs.com/files/clrs97/2023HDU%E7%AC%AC%E4%B8%89%E5%9C%BA%E9%A2%98%E8%A7%A3.pdf Code: A. Magma Cave #include<iostream> #include<al ......
钉耙 算法 联赛 大学生 大学

The 2023 ICPC Asia Hong Kong Regional Programming Contest (The 1st Universal Cup, Stage 2:Hong Kong)

题解: https://files.cnblogs.com/files/clrs97/2022Hong_Kong_Tutorial.pdf Code: A. TreeScript #include <bits/stdc++.h> using namespace std; using LL = lon ......
Hong Kong Programming The Universal

The 2022 ICPC Asia Hangzhou Regional Programming Contest

题解: https://files.cnblogs.com/files/clrs97/2022ICPCHangzhouTutorial.pdf Code: A. Modulo Ruins the Legend #include<bits/stdc++.h> using namespace std; ......
Programming Hangzhou Regional Contest 2022

【基础算法】排序算法 —— 插入排序

一、算法原理 插入排序将数组分为已排序区间和未排序区间,初始已排序区间只有数组第1个元素,未排序区间从下标 1 开始到数组末尾。每次取未排序区间的第1个元素,将它插入已排序区间的合适位置,并保证已排序区间一直有序。重复这个过程,直到未排序区间为空,算法结束。 给有序数组(已排序区间)插入1个新元素, ......
算法 基础

【基础算法】排序算法 —— 选择排序

一、算法原理 选择排序将数组分为已排序区间和未排序区间,每次选择未排序区间的最小元素,将它放到已排序区间末尾。一次选择会让一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序。 示例:使用选择排序对数组 arr = [4,5,6,3,2,1] 从小到大排序。 第1次选择: 第2次选 ......
算法 基础

【基础算法】排序算法 —— 冒泡排序

一、算法原理 冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,如果不满足大小关系要求,就进行交换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序。 示例:使用冒泡排序对数组 arr = [4,5,6,3,2,1] 从小到大排序。 第1 ......
算法 基础

稳定婚姻问题(Gale-Shapley算法)

前言 今天 duck、香饽饽老板和彬彬一起出了个模拟赛,赛时T2想到了跟正解很接近的做法,但最后还是打挂了then喜提0pts,后面 duck 讲题的时候才知道是稳定婚姻板题。 看完证明之后觉得很妙,遂开坑。 只是简单整理,图一乐子吧算是。 说是稳定婚姻问题,但其实我觉得更合适的叫法是属性稳定分配问 ......
Gale-Shapley 算法 婚姻 Shapley 问题

【基础算法】排序算法

一、排序算法简介 排序是对批量数据按照一定的顺序进行排列的操作。 1.1 学习排序算法的要点 算法原理、代码实现、评价算法优劣。 1.2 评价排序算法的优劣 排序算法的优劣可以从以下 3 个方面进行评价: 时间性能:最好、最坏、平均时间复杂度; 内存占用:是否原地排序,原地排序算法,特指空间复杂度是 ......
算法 基础