自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 windows下pillow库缺少libraqm.dll的解决方法(language or font features is not supported without libraqm)

解压后,得到两个文件libraqm.dll和fribidi-0.dll。最近在使用pillow库制作课设的时候,发现如果更改字体将会报错。搜索发现是缺少了libraqm.dll文件。重启后运行代码,报错消失,代码成功运行。将其放入python的目录下。

2023-03-23 14:00:24 780

原创 GDUT ACM2022寒假集训 专题五 G(线段树+离散化+染色)

一、例题(Mayor’s posters)原题链接:https://vjudge.net/contest/479523#problem/G1、题意有一堵墙,往上面贴海报,每张海报有各自的范围,可以相互覆盖,求最后还能看见多少张海报?2、输入格式第一行一个整数n表示数据组数每组数据第一行一个整数m表示海报数量接下来m行每行两个整数l,r表示海报覆盖的范围3、输出格式一个整数表示最后还能看见的海报数量4、样例sample input1151 42 68 103 47 10

2022-03-12 11:48:58 294

原创 GDUT ACM2022寒假集训 专题五 C E(线段树)

一、线段树线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。——百度百科线段树主要用于维护区间信息,并且支持加、乘、取模等多种操作,几乎是算法竞赛中最常用的数据结构,本文以区间加为例对于一个数组a【1,5,4,2,3】,我们对他建立线段树并进行区间加操作

2022-03-04 13:00:57 617

原创 GDUT ACM2022寒假集训 专题四 C(求逆元)(exgcd & 费马小定理)

一、为什么要求逆元先引入求余运算法则(a+b)%p=(a%p+b%p)%p((a+b) \% p=(a \% p+b \% p) \% p \quad((a+b)%p=(a%p+b%p)%p( 对 )))(a−b)%p=(a%p−b%p)%p((a-b) \% p=(a \% p-b \% p) \% p \quad((a−b)%p=(a%p−b%p)%p( 对 )))(a∗b)%p=(a%p∗b%p)%p(\left(a^{ * } b\right) \% p=(a \% p * b \% p)

2022-02-25 15:15:29 430

原创 GDUT ACM2022寒假集训 专题四 A D(欧几里得/扩展欧几里得算法)(gcd/exgcd)

一、欧几里得算法(gcd)欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。——百度百科欧几里得算法用于求两个数的最大公约数,在数论类题目中比较常见long long gcd(long x, long y)//辗转相除法求最大公约数(x>y){ return (y == 0) ? x : gcd(y, x % y);//x/y=q...r //(x,y)=(y,r) x

2022-02-23 21:25:01 388

原创 GDUT ACM2022寒假集训 专题三 E F(最小生成树kruskal)

更好的阅读体验请前往:Paxton的小破站 一、最小生成树一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。——百度百科最小生成树简单来说就是用总数最短的边来将所有的点连通,并且不能存在环结构。最小生成树有两种算法,即kruskal(克鲁斯卡尔)算法或prim(普里姆)算法,本文介绍kruskal(克鲁斯卡尔)算法。如上图,这是一个无向图,我们要做的第一步就是将他们的每一条边的长度以及他们连通的两个点取出并单独排序,如下

2022-02-21 18:13:49 217

原创 GDUT ACM2022寒假集训 专题三 B C(并查集)

更好的阅读体验请前往:Paxton的小破站 一、并查集并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。——百度百科并查集有三个操作合并(Union):把两个不相交的集合合并为一个集合。查询(Find):查询两个元素是否在同一个集合中。初始化(init):使用并查集前将并查集数组初始化为自身初始化(init)void init(int n){ for (int i = 1; i <= n; ++i) { fa[i]

2022-02-18 21:29:52 164 1

原创 GDUT ACM2022寒假集训 专题二 D E(01背包)

更好的阅读体验请前往:Paxton的小破站 一、01背包01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2至Wn,与之相对应的价值为P1,P2至Pn。01背包是背包问题中最简单的问题。01背包的约束条件是给定几种物品,每种物品有且只有一个,并且有权值和体积两个属性。——百度百科01背包相关的问题有三个注意点,1、物品重量 2、物品价值 3、背包容量每一件物品都有取和不取两种情况,同时还要依据题目限制判断物品能不能取,且每个物品都只有一件,求出将哪些物品装入背包可

2022-02-12 14:51:42 157

原创 GDUT ACM2022寒假集训 专题二 A B(最长上升/下降子序列问题)

更好的阅读体验请前往:Paxton的小破站 一、最长上升/下降子序列分为最长不上升子序列,最长上升子序列,最长不下降子序列,最长下降子序列四种。以最长上升子序列为例例如5 6 7 1 2 8 这个序列,他的最长上升子序列为5 6 7 8最直接能想到的算法就是逐个数字进行双层循环向后查找比自己大的数显然这样的算法是非常容易超时的我们可以定义一个d数组来存储这个上升子序列,使用len表示这个子序列的长度使用一层循环遍历一次原数组,将每个数与子序列中的最后一个数字进行比较若它大于子序列中的

2022-02-08 21:34:34 134

原创 GDUT ACM2022寒假集训 专题一 F(一维&二维差分)

更好的阅读体验请前往:Paxton的小破站 一、一维差分1、原理假设有一个数列,我们需要对数列中的一个区间加上或减去一个值,直接想到的便是遍历该区间逐项加减。但是当请求的操作变得非常多的时候,每次请求都进行一次遍历会很容易爆时间,因此我们引入了差分这个算法。差分的特点就是在进行多次操作少量查询的时候可以快速得出结果。如下图所示,a[n]是输入的数列,b[n]是差分数列,且b[n] = a[n] - a[n-1]。图中先求出原本的差分数列,然后将3,5,7这部分进行+1操作后,我们发现操作

2022-01-23 16:07:51 315

原创 GDUT ACM2022寒假集训 专题一 D E(一维&二维前缀和)

一、一维前缀和1、原理一维前缀和是一个数组的某项下标之前(包括此项元素)的所有数组元素的和。类似于数列中的求 Sn 即数列的前n项和。按照一般的思路我们很容易会想到用一个for循环从头到n逐个累加,但是当请求查找的次数变得非常多的时候,这样的做法显然会超时。因此我们可以在输入的时候提前将每一项的前缀和提前求得并用一个新数组 S[n] 进行保存,如下图所示由图中推导可知 S[0] = a[0] 且 S[n] = S[n-1] + a[n] 得到S[n]之后我们便可以直接输出对应位置的前缀和,如下

2022-01-23 12:15:04 2484

原创 GDUT ACM2022寒假集训 专题一 G(二分查找)

如果要在一个有序数列中查找一个数的位置,首先想到的应该是遍历一遍数组逐个寻找。但是这样做会有一个问题,当查找请求变得非常多的时候,时间复杂度就变成了O(n*m),很容易爆时间。因此我们可以使用二分查找的方法来解决问题。二分查找的基本思路就是,每次都取当前区间的中间值,如果等于目标,则返回结果。否则,判断目标值与中间值的大小关系,调整左右边界,选择丢弃掉一半的元素,再继续执行二分查找,如下图所示。开始时左右边界标记都不位于数列

2022-01-22 18:56:18 527 2

原创 基于hexo + github实现免费个人博客搭建

基于hexo+github实现免费个人博客网站的搭建

2022-01-18 20:30:07 582

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除