自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shi_zi_183的博客

一起学习,相互督促

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

原创 (7)同余式、幂与费马小定理

同余式、幂与费马小定理费马小定理设p是素数,a是任意整数且a≡0 (mod  p)a\equiv0\ (\mod p)a≡0 (modp),则ap−1≡1 (mod  p)a^{p-1}\equiv1\ (\mod p)ap−1≡1 (modp)在给出费马小定理证明之前,我们要指出它的作用并说明如何用其简化计算。作为特例,我们考虑同余式622≡1 (mod  23)6^{22}\equiv1\ (\mod 23)622≡1 (mod23)这

2020-09-30 07:38:06 480 1

原创 (6)同余式

同余式整除性是研究数论的有力工具,这已在勾股数组、最大公因数与素数分解中得到了体现,同余式提供了一种描述整除性的简便方式。事实上同余式使得整除性理论非常类似于方程理论。如果m∣a−bm\mid a-bm∣a−b,我们就说a与b模m同余并记作a≡b (mod  m)a\equiv b\ (\mod m)a≡b (modm)例如7≡2 (mod  5),47≡35 (mod  6)7\equiv2\ (\mod5),47\equiv35\ (\mod 6)7≡2&n

2020-09-29 14:07:37 660

原创 (5)因数分解与算数基本定理

因数分解与算数基本定理素数是这样的整数p≥2p\geq2p≥2,它的(正)因数仅有1与p。不是素数的整数m≥2m\geq2m≥2叫做合数。例如,素数2,3,5,7,11,13,⋯素数 2,3,5,7,11,13,\cdots素数2,3,5,7,11,13,⋯合数4,6,8,9,10,12,⋯合数4,6,8,9,10,12,\cdots合数4,6,8,9,10,12,⋯引理7.1 令p是素数,假设p整除乘积ab,则p整除a或p整除b(或者p既整除a也整除b)。证明已知p∣abp\mid abp∣ab。

2020-09-28 23:28:13 488

原创 2020 计蒜之道 预赛 第二场 群星

群星水题#include<iostream>using namespace std;const int MAX = 1e4 + 10;double a, dm;int n;double io[MAX];int main(){ double up = 0, down = 0; cin >> a >> dm >> n; for (int i = 1; i <= n; i++) cin >> io[i]; for

2020-09-23 07:14:15 142

原创 P1005 矩阵取数游戏

P1005 矩阵取数游戏简单的dp题,关键是数太大,需要自己写高精度。ps:大数写错了,有几组数据报错,回头看一个标准答案学一下,太菜了。#include<iostream>#include<algorithm>#include <cstring>using namespace std;#define ll long longconst int MAX = 100;ll a[MAX];int n, m;struct big { ll n[MAX]

2020-09-22 20:13:49 76

原创 洛谷P1084疫情控制

洛谷P1084疫情控制考点:树上倍增,贪心,二分答案,链式向前星。之前见过一个类似的用贪心和枚举答案的题,但没太在意。这道题想到了用贪心想要模拟军队前进,然后删去重复无用的军队,但后来发现是多叉树这样就不能做了真正的解法:树上倍增预处理,二分枚举答案找到最小的答案(二分枚举需要题目对于但答案有单调性,所有大于或小于的正确答案的值也可以使题目通过,且答案有最小单位,比如这道题一定是整数)然后是用贪心写出检查答案正确的函数。题中的细节很多,需要一步一步的拆解问题。#include<iostream

2020-09-21 06:56:10 274

转载 莫队算法

莫队算法基础莫队算法莫队算法=离线+暴力+分块离线与在线的概念。在线是交互式的,一问一答;如果前面的答案用于后面的提问,称为“强制在线”。离线是非交互的,一次性读取所有问题,然后一起回答,"记录所有步,回头再做”。基础的莫队算法是一种离线算法,它通常用于不修改只查询的一类区间问题,复杂度O(nn)O(n\sqrt{n})O(nn​) ,没有在线算法线段树或树状数组好,但是编码很简单。下面是一道莫队模板题。HH项链 洛谷 1972题目描述:给定一个数量,询问某个区间内不同的数有多少个。输入:第一

2020-09-19 23:04:31 375

原创 静态区间查询——RMQ算法

RMQ算法问题是给一个数组,其中有N的数字,给多个询问,要求给出一个区间内的最大值。如果每次暴力法,每个询问都遍历那么时间复杂度是O(n2)O(n^2)O(n2)。这样重复运算太多了,我们如果用树状数组或区间树每次询问的时间复杂度是O(logn)O(logn)O(logn),树状数组和区间树是设计的便于修改的,那有没有更快的,有!,RMQ算法每次询问的时间复杂度是O(1)O(1)O(1)(需要注意的是RMQ只适用于静态区间最值的查询,限制很大。)RMQ算法一般用较长时间做预处理,时间复杂度为O(nlog

2020-09-19 12:38:23 263

原创 洛谷P1081 开车旅行

洛谷P1081 开车旅行#include<iostream>#include<algorithm>#define ll long longusing namespace std;const int MAX = 1e5 + 10;int n, m;ll x;struct node { int i, l, r; ll h;}city[MAX];int s;int p[MAX], near[MAX], cnear[MAX];int f[MAX][21];ll

2020-09-18 23:51:42 599

原创 计蒜客——染色

题目来源2020 计蒜之道 预赛 第一场#include<iostream>#include<memory.h>#include<algorithm>#include<vector>using namespace std;const int MAX=3e5+10;int n,m;long long dp[MAX];int h[MAX],tot=0;struct Inet{ int l,t; long long c; int next

2020-09-18 15:49:57 182

原创 计蒜客——五子棋

五子棋计蒜之道程序设计大赛已经迎来了第六届,蒜头君很开心,决定带上好友们一起下一把 五子棋,并由自己来担任裁判。五子棋的规则为:双方分别使用黑白两色的棋子,每次 落子(放置一个己方颜色的棋子),放在棋盘直线与横线的交叉点上,一方先形成至少五个己方颜色棋子连成一线者获胜。黑色棋子先手(第一个放置的棋子颜色一定是黑色)。在这里,没有任何禁手的限制(如果你不清楚禁手是什么,可以忽略这句话)。也就意味着,当一方出现六子连珠或更多己方棋子连成一条线时,也算这方胜利。当一方将要落子,且有至少一处落子后可让自己的

2020-09-17 21:24:48 493

原创 数据结构——二叉排序树与平衡二叉树

二叉排序树二叉排序树或是一棵空树,或着是具有以下性质的二叉树:(1)若左子树不空,则左子树上的所有节点值均小于他的根节点值。(2)若右子树不空,则右子树上的所有节点值均大于他的根节点值。(3)它的左右子树也分别为二叉树。如图就是一个二叉排序树。查找,二叉排序树又叫二叉查找树,查找方法与次优二叉树相同,将查找值与当前节点比较若相等,则查找成功,若大了则继续在右子树寻找,小了则继续在左子树寻找。Bitree* SearchBST(Bitree* T,int key){ if((!T)||T-

2020-09-16 08:38:32 1124

原创 (4)线性方程与最大公因数

线性方程定理已知两个整数a,b。我们观察a的倍数加上b的倍数得到的所有可能的整数。也就是ax+byax+byax+by得到的所有整数,其中x与y可以为任意整数,注意x,y可以取到负值。例如我们列出a=42,b=30的所有整数,通过观察发现所有的数都是6的倍数,这很好理解,因为42与30都可以被6整除,42x+30y=6(7x+5y)42x+30y=6(7x+5y)42x+30y=6(7x+5y)的每个数都是6的倍数。更一般的,显然形如ax+byax+byax+by的每一个数都可以被gcd(x,y)gcd

2020-09-15 21:14:07 483

原创 (3)整除性与最大公因数

整除性在勾股数组的研究中我们已经看到,整除性与因式分解的概念是数论的重要工具,本节我们将更进一步的考察这些想法。假设n,m是整数,且m≠0。m整除n指n是m的倍数,即存在k使得n=km。如果m整除n,我们记作m|n。类似的如果m ∤\nmid∤n。整除n的都叫n的因数。最大公因数两个数a与b(全不为零)的最大公因数就是整除他们两个的最大值,记作gcd(a,b)gcd(a,b)gcd(a,b),如果gcd(a,b)=1gcd(a,b)=1gcd(a,b)=1,我们称其为互素。最大公因数在数论的研究中最

2020-09-15 08:02:59 960

原创 插头dp

插头dp之前在讲状压dp时还没有了解过插头dp,但状压的最后一道例题已经和插头dp很像了,这节就来解决一个插头dp的入门问题。插头dp学习之前需要掌握或了解的东西:状压dp,哈希表,状压用来压缩一些局面,但可能出现的情况很多导致状压后的数很大,这时候就可以使用哈希表来仅存放已出现的局面,避免开辟太大的数组。插头dp有几个关键词,当关键词出现时可以向这方面考虑:超小数据范围,网格图,连通性。还需要理解一些抽象的定义:插头一个格子以某种方式向另一个格子相连,相连的位置叫插头,具体的类似拼图的凹槽与凸

2020-09-14 20:58:17 791

原创 (2)勾股数组与单位圆

单位圆有理点公式前一节我们描述了勾股定理a2+b2=c2a^{2}+b^{2}=c^{2}a2+b2=c2对于这个公式左右都除以c2则得(ac)2+(bc)2=1(\frac{a}{c})^{2}+(\frac{b}{c})^{2}=1(ca​)2+(cb​)2=1所以,有理数对(ac,bc)(\frac{a}{c},\frac{b}{c})(ca​,cb​)是方程x2+y2=1x^{2}+y^{2}=1x2+y2=1的解。大家知道方程x2+y2=1x^{2}+y^{2}=1x2+y2=1代表中心在

2020-09-13 22:27:59 383

原创 (1)爬取网站源码

urllib库urllib库是python标准库中用于网络请求的库。该库有4个模块,分别是urllib.request,urllib.error,urllib.parse,urllib.robotparser。其中第一个与第二个模块子爬虫程序中应用比较频繁。urlopen() 模拟浏览器发出一个HTTP请求,需要用到urllib.request模块。urllib.request的作用不仅是发起请求,还能获取请求返回结果,还能获取请求返回结果。下面先来看一下urlopen()的API。urllib.re

2020-09-13 20:19:33 1131

原创 (1)勾股数组

勾股数组在国外又称毕达哥拉斯定理,初中都学过一个直角三角形的两个直角边的平方和等于斜边长的平分。公式:a2+b2=c2\hspace{5cm}a^{2}+b^{2}=c^{2}a2+b2=c2是否有无穷个勾股数组我们已经找到了一些勾股数组例如(3,4,5)(3,4,5)(3,4,5)。我们将各个勾股数组设为(a,b,c)(a,b,c)(a,b,c),将每个数都乘上个d,那么(da,db,dc)(da,db,dc)(da,db,dc)也是一个数组。因为(da)2+(db)2=d2(a2+b2)=d

2020-09-12 22:52:18 1795

原创 分块算法

分块分块概念回顾“区间”问题,前面给出了暴力法,树状数组,线段树等方法。给定一个n个数的数列,做m次区间修改和区间查询。暴力法正能解决小规模问题,但是代码简单;树状数组和线段树都使用了二分的思想,但是代码复杂。这节的分块算法介于两者之间,...

2020-09-12 09:57:59 665 1

原创 数据结构——静态查找表

静态查找表顺序查找表顺序表与线性链表都可以表示静态查找表。两者的实现静态查找表相似,这里以顺序表为例。顺序查找就是从表中最后一个记录开始,逐个进行记录关键字与给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,反之失败。对于顺序查询有一种技巧可以优化效率。查找之前先将key赋值给elem[0],搜索从后向前搜索,这样可以免去每次循环都要检查整个表是否搜索完毕,这样时间可以减少一半。当然监视哨也可以放在表尾。有序表的查找无序表可以使用顺序查找,有序表除此以外还可以使用折半查找。折半查

2020-09-11 19:02:12 979

原创 数据结构——哈希表

哈希表序言哈希表又称散列表。对于一般的数据结构,记录在结构中的相对位置都是随机的,和记录的关键字无关,因此要想找到数据在数据结构中的相对位置需要进行一系列和关键字的”比较”。例如顺序结构的比较的结果为==或!=,折半查找,二叉树排序树查找和B–树查找时比较的结果为<或>等等。(查找的效率依赖于查找过程中所进行的比较次数)当然最理想的情况下,我们希望一次存取就可以查找所有元素,这就需要在每个储存位置与它的关键字之间建立一个对应关系f,使其一一对应。哈希函数哈希函数的设定非常灵活,他是

2020-09-10 17:21:14 207

原创 线段树

线段树线段树概念线段树和树状数组都是解决区间问题的数据结构,线段树的两个经典问题:区间求和,区间最值。(1)区间最值:1)求最值:给定i, j ≤ n,求区间[i, j]内的最值。2)修改元素:给定k和x,把第k个元素a[k]改成x。如果用普通数组存储数列,上面2个操作,求最值的复杂度是O(n),修改是O(1)。如果有m次“修改元素+查询最值”,那么总复杂度是O(mn)。如果m和n比较大,例如105,那么整个程序的复杂度是1010数量级,这个复杂度在算法竞赛中是不可接受的。(2)区间求和:给

2020-09-03 20:22:18 925

空空如也

空空如也

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

TA关注的人

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