Python科学计算库
jupyter notebook我们先下载一个jupyter notebook。pip下载指令1pip install jupyterlab运行指令1jupyter notebook numpynumpy是py中,为实现快速科学计算与使用简便之间的均衡,把C的计算方式封装的一个类其中narray是核心类 numpy对象中有几个向量就有几个“维度”,而向量自身也有一个“长度” 可以笼统理解为,假如一个narray的shape是(3,5),它就近似于一个三行五列的矩阵 123456789101112import numpy as npa = np.arange(15).reshape(3, 5)aa.shape :有总共有多少个数据 维度乘大小a.ndim :有几个向量a.dtype.name :a.itemsizea.sizetype(a)b = np.array([6, 7, 8])btype(b) pandas一些简单的操作,通过注释做出说明123456789101112131415hk = pd.read_csv('香港2022疫情数据.csv')#...
C++源码运行
前言由于经常接触编译期,运行期,链接期,在此简单记录C++从源代码到可执行文件的过程 🧩 1. 预处理阶段(Preprocessing)时机:编译前,由预处理器执行任务: 处理 #include, #define, #ifdef 等指令 宏展开、条件编译、文件合并 结果:生成一个单一的、纯 C++ 源码文件(无宏、无包含指令)。 ✍️ 我的思考: 我们熟悉的头文件插入就是在这里完成的。 🛠️ 2. 编译阶段(Compilation)时机:预处理后,由编译器执行任务: 语法分析、语义检查(如类型检查) 每个 .cpp 文件编译为目标文件(.o 或 .obj) 生成机器指令,但尚未解析符号 结果:每个源文件变成一个目标文件 关键词:编译期错误(如语法错误、类型不匹配) ✍️ 我的思考: 类似于对代码做一遍检查,在把代码整理成指令串的同时看看有没有错误。 例如,对没有虚函数的类进行`dynamic_cast`就会在这里报错 🔗 3....
二叉树
二叉树概念满二叉树二叉树是是一种每个节点不断二分出左子节点和右子节点的树状数据结构,在算法竞赛中常常使用。 其优势在于,当二叉树的平衡性维护的较好(即左子节点的复杂度和右子节点的复杂度大致相仿)时,访问二叉树上的某个节点只需要$O(logN)$的时间复杂度,非常方便。 另外,二叉树比较适合完成从局部到整体的转变,从某个树上节点,一直向上追溯根节点并修改值,具有代表性的是线段树这一数据结构,修改子节点的值之后通过递归修改根节点的值。 但当二叉树不平衡时,访问某个节点的时间就会增加。极端情况下,一棵二叉树会退化成链表,此时访问的时间复杂度是$O(N)$ 我们用一个例题来看一下一棵满二叉树如何建成 P4715 【深基16.例1】淘汰赛 这里采用递归建树,按照题意不断把胜者放到根节点,得到最终结果。 递归建树是一种比较常见的方式,因为我们往往先拥有子节点,再依据子节点去更新根节点。 1234567891011121314151617181920212223242526272829#include<iostream>#include <vector>using...
Python基本语法
谨以此博客记录入门Python的笔记 变量字符串12345name = " a "print(name)print(name.rstrip()) # 去除左侧空格print(name.lstrip()) # 去除右侧空格print(name.strip()) # 去除两侧空格 小数在python中,输出小数会碰到这样奇怪的事情:12print(3*0.1)输出:0.30000000000000004这与计算机计算浮点数的方法有关为解决这个问题,引入格式化输出 格式化输出12a =...
线段树详解
...
C++:虚函数和类型转换
虚函数类似于静态函数,类的成员函数也可以被定义为虚函数。1234class A{public: virtual void function(){}};定义为虚函数之后,编译器会被显式告知这是一个多态函数,将会在派生类中被重写。 多态的意思是,这个函数在基类和派生类当中是不一样的。通过基类对象和派生类对象调用出的函数不一样。 那么,这种写法和直接在派生类中重写一个同名函数有什么区别呢? 区别在于,假如是重写一个同名函数,调用如下: 1234567891011121314151617181920212223class A{public: void function(){ cout<<"A\n"; }};class B:public A{public: void function(){ cout<<"B\n"; }};int...
基本算法
二分法引入力扣209. 长度最小的子数组前缀和+二分查找 12345678910111213141516171819202122232425262728class Solution {public: int minSubArrayLen(int target, vector<int>& nums) { int n=nums.size(); vector<int>sum={0,nums[0]}; for(int i=1;i<n;i++){ sum.push_back(sum[i]+nums[i]); } int minLen=n,flag=0; for(int i=0;i<=n;i++){ int r=n,l=1; while(l<=r){ int m = r -...
C++:类的继承
...
Python基础:环境配置
conda环境配置conda环境是python中相当于工具包的一个存在,因为python的使用中需要调用大量的库。不同的库之间难免有版本冲突和不同的Python版本依赖。 为了解决这个问题,Python开发者提出了conda环境的概念,可以把库和python版本安装到虚拟环境中,运行时在不同的Python虚拟环境里面运行即可。 步骤如下: 安装Anaconda 找到Anaconda Prompt 打开Anaconda Prompt,创建自己的新环境,配置python版本 现在以python3.11为例,math是这个环境的名字 1conda create -n math python=3.11 后续激活操作后续可以在Anaconda Prompt中或者其他编译器的Python控制台输入下列指令去激活环境12345# To activate this environment, use $ conda activate math# To deactivate an active environment, use $ conda deactivate 镜像源配置123conda...
高级数据结构:题目+代码
并查集模板题:此题非常经典,是不带权的并查集模板 P1551 亲戚注意:合并是把根节点合并,不是中途合并,不然会发生断路123456789101112131415161718192021222324252627282930313233343536#include<bits/stdc++.h>using namespace std;int n,m,p;int totalSet[5005];int find_set(int a){ if(totalSet[a]==a){ return a; } totalSet[a]=find_set(totalSet[a]); return totalSet[a];}void add_set(int a,int b){//把a分支并入b a=find_set(a),b=find_set(b); totalSet[a]=totalSet[b];}int main(){ ...