自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

.SAI.的博客

十年感悟,两年参悟

  • 博客(62)
  • 收藏
  • 关注

原创 STL函数及使用

容器类pair#include <iostream>using namespace std;int main(){ pair<int,int> a; //创建一个pair pair<string,int> d; a.first=1; //pair的赋值 a.second=2; cout<<a.first<<" "<<a.second<<endl; //输出 pair<int,int

2022-01-16 21:49:23 487 1

原创 GDKOI-J 2023 游记

GDKOI 2023 游记

2023-03-18 11:54:41 645 1

原创 pycharm python 程序打包相关

从基础教会你如何正确将python文件打包为exe

2023-01-12 11:06:31 3883

原创 VScode 基础使用教程

从零开始简单学VScode

2022-11-28 09:11:26 8265

原创 tarjan 缩点笔记

tarjan笔记

2022-11-20 11:58:09 508

原创 Python问题:NotImplementedError: The confidence keyword argument is only available if OpenCV is install

出现了问题:NotImplementedError: The confidence keyword argument is only available if OpenCV is install。Python 用Pyinstaller生成exe的问题,因为用了locateOnScreen的confidence参数,所以调用了OpenCV,最后,发现是Pyinstaller与OpenCV版本冲突所致,最后用 OpenCV4.5.3.56解决了。

2022-09-26 00:38:54 3804 1

原创 浅谈牛顿迭代

牛顿法

2022-07-19 14:53:03 598

原创 What is e^iπ

why e^iπ=-1

2022-07-10 11:21:57 208

原创 largrange 插值学习笔记

一种优于待定系数法的插值法,largrange 插值

2022-07-09 10:12:55 244

原创 Miller Rabin 判素算法

判断工业素数的Miller Rabin算法,真的不了解一下吗?

2022-06-12 10:25:46 198

原创 SP2901 GEOPROB - One Geometry Problem 题解

一道中考题的程序实现

2022-06-04 15:07:48 101

原创 Baby Step Giant Step 初步

指数同余方程求解算法 BSGS 通俗解读,一遍上手

2022-06-01 21:15:35 111

原创 整除分块入门

整除分块首先引入一个问题,若我们要求这么一个式子:∑i=1n⌊ni⌋\sum\limits_{i=1}^{n} \left\lfloor\dfrac{n}{i}\right\rfloori=1∑n​⌊in​⌋自然而然会想到这么一段翻译代码:for(int i=1;i<=n;i++) sum+=n/i;但是,如果 1≤n≤1091\le n\le10^91≤n≤109,又该如何解决呢?显然,⌊ni⌋\left\lfloor\dfrac{n}{i}\right\rfloor⌊in​⌋

2022-05-25 16:47:14 170

原创 线性同余与乘法逆元

欧几里得定理∀a,b∈N,gcd⁡(a,b)=gcd⁡(b,a mod b)\forall a,b\in \N,\gcd(a,b)=\gcd(b,a\bmod b)∀a,b∈N,gcd(a,b)=gcd(b,amodb)证明:考虑记a与b的公因数为d∵∃t,k,r∈N,b=t⋅d,a=k⋅(t⋅d)+r∵d∣b,d∣a∴∃x∈N,x⋅d=a=k⋅(t⋅d)+r⇔x=k⋅(t⋅d)+rd=kt+rd∵x∈N∴d∣r∴d∣(a mod b)∴a mod b的因数集与a与b的公因数集相同∴gcd⁡(a,b)

2022-05-13 22:09:15 859

原创 欧拉函数初步

概念若a,b∈Z,gcd⁡(a,b)=1,则称a与b互质对于n∈Z,将区间[1,n]中与n互质的个数称为欧拉函数,记作φ(n)若a,b\in\Z,\gcd(a,b)=1,则称a与b\color{Blue}互质\\\color{black}对于n\in\Z,将区间[1,n]中与n互质的个数称为\color{Blue}{欧拉函数},记作\varphi(n)若a,b∈Z,gcd(a,b)=1,则称a与b互质对于n∈Z,将区间[1,n]中与n互质的个数称为欧拉函数,记作φ(n)欧拉函数考虑n=p1c1⋅p2

2022-05-06 21:12:31 407 1

原创 同余初步性质

基本概念前言在小学中,我们接触到了整数除法,其中会有一个概念名为余数。当然,这个概念在小学五年级学小数的时候就被抛弃了,但是在数论的知识中,它再次卷土重来,折磨众生。整除概念对于一个整数 aaa 和 mmm,我们取 a÷ma\div ma÷m 下的余数,记为 a mod ma \bmod mamodm易得,整除的概念为除以 mmm 的意义下余数为 000,即a mod m=0a \bmod m=0amodm=0:一般的,对于整数 aaa 和 mmm,若 a mod m=0a \bmod m=

2022-04-23 14:25:03 1764 2

原创 区间维护(树状数组)

问题描述:题目描述解题思路:有关树状数组的基本知识这里就不再赘述,我们只需要知道他可以处理区间维护性的问题以及可修改的RMQ问题等,效率较高。下面是有关线段树的操作单点修改void update(int x,int k){ for(;x<=n;x=x+(x&(-x))) t[x]+=k; //x位置的修改只对他的祖先造成影响,而x的祖先恰好是x+x&-x一路递增,因此直接修改x的祖先的值即可 return ;}区间查询int sum(int

2022-01-29 18:53:31 1417

原创 区间维护(分块大法+卡常)

题目描述:题目传送门解题思路:首先我们先忽略题目的标题(树状数组模板),我们来尝试一种新的算法——分块。分块思想分块是一种优美的暴力(by DFT)。他的核心思想在于将一个要维护的区间(长度为 nnn)分成又穷个 n\sqrt nn​ 个子区间来进行分别维护。每个子区间的长度都为 n\sqrt nn​,将我们所要查询的区间所覆盖的每个子区间的信息进行整合,就是我们要查询的区间的信息。这样子将区间分块来处理有什么好处呢?因为它可以将对一个区间维护的复杂度均摊到每一个长度为 n\sqrt

2022-01-27 13:09:37 901

原创 最近公共祖先 (LCA倍增)

题目描述:题目解题思路:首先思考暴力算法,我们先将待处理的 u,vu,vu,v 两点移动到相同深度的地方,然后两个一起向个自的父节点往上跳,直到跳到最后一次父节点相同的时候即为它们的最近公共祖先。很显然这个思想是没有问题,但是要是纯属暴力的一级一级往上跳这样实现,很显然会超时,那么我们就可以考虑倍增优化。对于倍增,我们知道他可以把一大段繁琐的步骤压缩为一个一次就进行 2x2^x2x 次的步骤进行对步骤的加速。因此我们可以把算法中的一级一级往上跳转换为每次跳 2i2^i2i 级,也就是说在树上倍增

2022-01-19 11:06:57 862

原创 判定有向无环图 (拓扑排序)

问题描述:给出一张有向图,问它是否存在环。解题思路:这里可以用到拓扑排序。拓扑排序的定义拓扑排序应用于有向无环图之中,排序完以后会出现这样的性质:对于一个点p,只对排序位置在它之后的点有边。如果有环,则环上的点以及环上点所能到达的点都不会被放进拓扑序列中。举例来说,如果我们将一系列需要运行的任务构成一个有向图,图中的有向边则代表某一任务必须在另一个任务之前完成这一限制。那么运用拓扑排序,我们就能得到满足执行顺序限制条件的一系列任务所需执行的先后顺序。当然也有可能图中并不存在这样一个拓扑顺序

2022-01-14 12:16:57 1706

原创 强连通分量 (Kosaraju)

问题描述求一个有向图中的强连通分量的个数。解题思路:明确一下强连通的定义:存在 iii 和 jjj 两点,使得 iii 和 jjj 互相可抵达。根据强连通的定义,我们可以得出,若对存在强连通的图进行置换(将所有有向边反转),那么强连通任然是强连通的。这里我们先给出一张存在两个强连通的图以及它的置换图。接下来是算法的步骤: 先任意找到一个点对原图进行 dfsdfsdfs 遍历一遍,然后将每个节点出栈的顺序记录。这一步骤保证了接下来算法求出的强连通分量是按照拓扑排序给出的。 按

2022-01-14 09:40:57 427

原创 无向图的最小环问题 (Floyd算法)

问题描述:题目传送门解题思路:

2022-01-13 20:04:27 1831 2

原创 洛谷P1037 产生数 (Floyd联通性问题)

问题描述:题目传送门解题思路:可以利用乘法原理,判断原数上每一位数字有几种变化情况,然后相乘即为答案。很显然,题目所给的变化情况即为一条边,而每一个数字的变化即为一个连通块,因此单个数字变化的个数即为这个连通块的大小。判断联通快的算法很多,可以通过 dfsdfsdfs 和 bfsbfsbfs 等搜索进行遍历每个连通块,这里我们通过 FloydFloydFloyd 求出 iii 和 jjj 是否相连来解决连通块问题。既 iii 所能到达的所有 jjj 都处在同一连通块,至于连通块的大小即为 ii

2022-01-13 15:33:33 273

原创 51nod 2650 最短缩减路径 (拆点最短路)

问题描述:题目传送门解题思路:我们一般会想到先在图上跑一遍最短路,然后在最短路径中找一条最长的边进行缩短。但是很容易可以发现,这种做法是很假的,因为缩短路径可能会使某条非最短路变成最短路。此时我们需要考虑一种清奇的思路。构建两张一模一样的图,其中上图 GGG 表示还未使用路径缩短的图,下图 G′G'G′ 表示已经使用了路径缩短的图,而上下图连接的单向变表示被路径缩短的边。如图:这样一来,由于在路径中必然需要使用一次路径缩短,因此我们必然要从上图的起点到达下图的终点,因此我们可以在这种双层图

2022-01-13 11:15:39 406

原创 最短路模板大全

例题:题目传送门解题思路:各路板板摆上:SPAF 最短路(链式前向星)int head[200010]={0},tot=0;struct Gar{ int x,y,w,next;} e[500010];void add(int x,int y,int w){ tot++; e[tot].x=x; e[tot].y=y; e[tot].w=w; e[tot].next=head[x]; head[x]=tot;}queue<int> q;bool us

2022-01-12 16:27:28 267

原创 SSL 1613 最短路问题

题目描述:有 NNN 个点(N<100)(N<100)(N<100),给出每个点的直角系坐标,某些点之间有双向变相连,边权为坐标上两点的直线距离,现在给出你原点和目标点,让你求两点间的最短路(保留两位小数)。样例输入:50 0 2 02 20 23 151 21 31 42 53 51 5样例输出:3.41解题思路:典型的最短路问题,由于NNN 太小了,我们可以用任何算法随便搞。这里来介绍FloyedFloyedFloyed 算法。Floyed

2021-12-25 15:38:27 877

原创 洛谷 P2449 矩形(并查集)

题目描述:题目传送门解题思路:很板子的一道并查集题目,就是求这个由多个矩形组成的连通分量。我们只需要判断这个矩形与先前互不联通的矩形是否联通,若联通,那么这块矩形相当于已经标记过了;若没有,那么这是一块崭新的矩形,最后看看有多少连通块即可。这得一提的是判断矩形是否重合的方法:首先我们得判断矩形是否有一部分的面重合,那么显然符合同一矩形的情况。然后判断是否有矩形只有顶点重合,若有,不符合重合情况。矩形重合判断代码:bool check(int x1,int y1,int x2,int

2021-12-24 20:52:02 596

原创 洛谷 P1196 银河英雄传说 (带权并查集)

题目描述:题目传送门解题思路:根据数据范围以及题目中提到的合并等操作可以联想用并查集求解。但是仔细想想,普通并查集只能判断某元素是否为统一集合的联通性问题,而题目中提到了“战舰数量”等权值性的问题,这种时候我们就要对并查集进行一些改变,成为可以处理权值的带权并查集。带权并查集必须要了解的前置知识是并查集(废话),百度食用更佳。带权并查集其实和普通并查集没有本质的区别,仅仅只是需要在路径压缩或合并集合的时候维护或更新节点与父节点的边权关系以及维护该集合内元素个数。设 faxfa_{x

2021-12-19 14:04:26 487 3

原创 洛谷 P2502 旅行 SSL 1312 (并查集暴力)

题目描述:题目传送门解题思路:遇到这种满足某种条件下找最值得问题,如这题,在路径中找到比值最小的最大值和最小值。我们并不需要先找到路径,然后在路径里面找到最大值和最小值,这样子的话很难找到头绪。我们可一个换个思路,枚举路劲的权值的最小值的下限 iii 和最大值的上限 jjj然后把符合这个上下限权值条件的边上的点所在的集合都按边的关系合并,也就是说若 aaa 和 bbb 之间有一条满足条件的边,则将 aaa 和 bbb 所在的集合合并。最后判断选用的这些边是否构成一条能够从起点到达目标点路劲,

2021-12-18 15:51:53 548

原创 CF510B 两点(DFS/BFS/并查集判环)

题目描述:题目传送门解题思路:一道在地图上连通块中判环的题目,我们可以考虑用 dfsdfsdfs 和 bfsbfsbfs 两种方法来判环。深搜判环由于环的本质上就类似于一条头尾相接的链,因此用“一路走到底” 的DFS是最合适不过的了。我们每个点都尝试延伸,向与它同颜色的一个点一直往下走,直道找到一条长度大于4的路径,使得他们头尾相连,那么这就是一条符合题目要求的环。代码难度也不高,就是爆搜。#include <bits/stdc++.h>using namespace

2021-12-18 09:48:25 825

原创 51nod 2667 染车(广度搜索)

题目描述:解题思路:我们可以把每辆车试做一个点,那么这辆车所能互相攻击到的车辆之间就相当于存在一条边。那么很显然,只有互相不被所有车攻击到的车才能染成不同的颜色,那么也就是说同一连通块中的车辆都能被攻击到,也就是连通块的个数即为最大染色个数。可以想到,只有具备攻击力的车辆才能进行扩展,,才能加入队列,而作为空地的点仅仅相当于类似边的存在,不用加入队列。接下来就是非常基础的广搜爆搜。CODE:#include <bits/stdc++.h>using namespace std

2021-12-17 21:25:21 294 1

原创 SSL 1759 连通分量(七种做法)

题目描述:解题思路:首先需要有前置知识,在无向图中,联通分量表示最大联通子图中的节点个数。然后我们考虑多种做法。做法一:dfs+dfs+dfs+ 邻接矩阵#include <iostream>#include <cstring>using namespace std;int n,g[1001][1001]={0},sum;bool vis[100010]={false};int dfs(int x){ vis[x]=true; for(int i

2021-12-17 20:09:04 631 5

原创 SSL 1455 电子老鼠闯迷宫

题目描述:样例错了,输出为 27。解题思路:这一题就是一道裸的广搜,主要就是考虑路径输出。我们需要一个 preipre_iprei​ ,记录节点 iii 在广搜中是由哪个节点转移的,然后最后用递归一步步倒推输出,即可处理路径问题。输出路径函数:void print(int p){ if(p==1) { cout<<"("<<SX<<","<<SY<<")->"; return ; } pr

2021-12-15 16:46:14 2631

原创 P1434 滑雪(记忆化搜索 / 线性DP)

题目描述:题目传送门解题思路:此题可以考虑使用记忆化搜索和动态规划来做。记忆化搜索:

2021-12-11 16:41:59 520 1

原创 硬币方案 (背包DP)

题目描述:给定 NNN 种硬币,其中第 iii 种硬币的面值为 aia_iai​,共有 bib_ibi​ 个。从中选出若干个硬币,把面值相加,若结果为 sss,则称“面值 sss 能被拼成”。求 111 到 MMM 之间能被拼成的面值有多少个。输入格式:输入包含多组测试数据。每组测试数据第一行包含两个整数 nnn 和 MMM。第二行包含2N个整数,分别表示 a1⋯ana_1\cdots a_na1​⋯an​ 和 b1⋯bnb_1\cdots b_nb1​⋯bn​。当输入 N=0,M=0N=0,M

2021-12-08 20:15:08 318

原创 SSL 1813 回文词 P1435 回文字串 / [蓝桥杯 2016 省] 密码脱落

题目描述:题目传送门解题思路:这里我们可以考虑回文串的两个性质:回文串正序和倒叙是相同的。回文串以中选取分割点,左部分正序与右部分倒序是相同的如:abbccbba左部分正序:abbc右部分正序:cbba右部分倒叙:abbc因此我们可以从中作文章,延伸出两种解法。性质一解法:可以发现,若要使某个串成为回文串,那么显然要使这个串的倒序与这个串的正序相同。那么问题就变成了:两个串长度相等,需要插入多少个字母,才能使得这个串的正序与倒序相同。我们发现,若要使正序与倒序相同,显然两个

2021-12-08 17:21:15 628

原创 P4170 木板涂色(区间DP)

题目描述:题目传送门解题思路:此题可以考虑使用区间 dpdpdp 求解。aia_iai​ 表示为目标状态中第 iii 个位置的颜色。设 fi,jf_{i,j}fi,j​ 表示在一个 (i,j)(i,j)(i,j) 的区间内,使这个区间达到目标颜色需要的最少涂色次数。可以考虑分类讨论两种情况:若 ai=aja_i=a_jai​=aj​ ,也就是说为 iii 上色时可以同时为 jjj 上色,因此 jjj 可以被省略,也就是说这个状态等同于 fi,j−1f_{i,j-1}fi,j−1​;也可以

2021-12-07 20:01:00 167

原创 P1776 宝物筛选 (多重背包二进制拆分)

题目描述:题目传送门解题思路:根据题意知此题为多重背包裸题,即每个物品至多可以选 mmm 次的背包题目。世上背包千千万,无一不是 010101 背包的变体,多重背包亦是如此。**若第 iii 个物品的数目为 mim_imi​ ,我们可以将一种物品视作 mim_imi​ 个物品,第 jjj 个物品的重量以及价值都是原物品的 jjj 倍。**在此基础上我们可以直接进行 010101 背包。for (int i=1;i<=n;i++) //枚举物品种数 for (int j=V;j&gt

2021-12-05 14:25:33 267

原创 SSL 1653 数字游戏

题目描述:输入格式:输入文件的第一行是一个整数n(1<=n<=2000)n(1<=n<=2000)n(1<=n<=2000),表示数字个数;第二行一个整数m(1<=m<=n)m(1<=m<=n)m(1<=m<=n),表示回合数,接下来一行有n个不超过100001000010000的正整数,a1,a2,a3,⋯,ana1,a2,a3,\cdots,ana1,a2,a3,⋯,an表示原始序列,最后一行有n个不超过500500500的正

2021-12-04 16:36:28 4463

原创 P1908 逆序对(归并排序)

题目描述:题目传送门解题思路:对于这个问题,我们显然能通过冒泡或选择排序来累计交换次数达到所求目的。但很显然,Θ(n2)\Theta(n^2)Θ(n2) 的排序无法承担 5∗1055*10^55∗105 的数据,因此我们需要用到 Θ(n logn)\Theta(n~log_n)Θ(n logn​) 的归并排序。归并排序:首先我们考虑要排序一段 (l,r)(l,r)(l,r) 的区间,归并排序需要考虑分裂和合并两个步骤,我们先看看分裂。如图,对于一个 (l,r)(l,r)(

2021-12-04 12:22:13 971

Hexo+github 所需工具

dfsf

2024-02-03

2023暑假纪念中学训练

asdfasdfadfadsfadsfadfafdsadsf

2023-07-21

simpl virus2.1

学python后做的第一个程序 或许某些时候会派上用场?

2023-01-07

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

TA关注的人

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