自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P1363 幻象迷宫

传送门本文参考洛古中的题解思路:如果从迷宫中某一个点出发,走到边界时,可以传送到另一个迷宫矩阵中,但建太多迷宫会增大空间和时间复杂度,所以用取模的形式,(x,y)=((x+dir+n)%n , (y+dir+m)%m ) )这样就相当于走到另一个迷宫。如果某一点在不同的迷宫中被重复走过,那么是有解的那么如何判断是否在同一个迷宫中?lx,ly 记录没有取模的x和y值,也就是如果迷宫无限大,x和y真正的值用vis记录x和y没有取模的值,(lx与ly记录的是最新的值,而vi..

2020-11-22 12:24:59 274

原创 python复习笔记(第五章知识缩略)

字符串编码encode()和decode()方法 bytes()和str()函数#默认为str类型s='我'#转为bytes类型s1=s.encode('gbk')s2=bytes(s,encoding='gbk')#转为str类型s3=s1.decode('gbk')s4=str(s1,encoding='gbk')#'gbk'可以换为'utf-8'采用UTF-8解析源程序,无论是数字字符、英文字母、汉字都按一个字符来对待和处理,长度都为1字符串构建s...

2020-10-17 17:40:01 249

原创 AVL树模板

#include<iostream>using namespace std;int n;struct tree{ int da; tree *le,*ri; int height;};void newtree(tree* &rt,int a){ rt=new tree(); rt->da=a; rt->height=0;//注意这里是0,不是...

2019-12-09 15:20:53 171

原创 RMQ(查询区间最大值或最小值)详解

RMQ问题:查询区间最大值或者最小值这里用ST表处理ST表(动态规划的思想)设f [i][st],i为元素起始下标,st为从i开始,长度为2^st的最大值1.预处理 f[i][0]为从i开始,长度为2^0范围的最大值for(int i=1;i<=n;i++){ f[i][0]=a[i]; }2.f[i][0] [i,i] ...

2019-12-09 15:20:20 1414

原创 马拉车算法

马拉车算法#include&lt;bits/stdc++.h&gt;using namespace std;string chu(string a){ int n=a.length(); string s; s.resize(n*2+3); s[0]='$'; s[1]='#'; for(int i=1;i&lt;=a.length();i+...

2019-12-09 10:37:24 149

原创 二叉树的各种题型详解

根据先序和中序求后序遍历后续遍历就是先遍历左子树,然后是右子树,最后是根由先序和中序,可以知道根和左右子树的位置,对其按照后续遍历的规则遍历即可每次用k++,就可以获取先序的根节点,对于先序来说,其实一直都是根节点获取rt后,对中序切割,便可以得到左子树和右子树,对左右子树继续遍历当 rt=f 时,说明没有左子树,当 rt =r 时,说明没有右子树,输出此节点即可rt&l...

2019-12-08 21:57:41 439 1

原创 pat甲级——1043 Is It a Binary Search Tree (25分)

题意:给出一组数,判断是否为二叉搜索树的前序遍历,或者为二叉搜索树的镜面前序遍历题解:法一:直接建树,然后前序遍历,并在遍历过程判断是否与题目给出的数相等 如果不相等,可以发现镜面的前序遍历为根右左,按照这个顺序再遍历一次即可 解法麻烦一点但好理解 #include<bits/stdc++.h>using n...

2019-12-06 19:58:28 106

原创 pat甲级 1022 用了很多STL的东西,map数组+istringstream / vector+优先队列

1022 Digital Library (30 分)方法一:1.用的是vector存储,第一行存id,第二行存book title ....依次存储2.查询时对于序号那一行遍历比较。特别的,Key值是用的string里的 find 函数查找是否为子串用遍历搜寻有没有相同的值3.相同则放进优先队列排序,优先队列要重新定义运算符注意:cin输值以后,用getline前,要先用ci...

2019-11-24 18:42:27 125

原创 栈的顺序表和链表存储

链表存储#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <climits>#include <iostream>#include <algorit...

2019-10-08 10:51:23 161

原创 1148 Werewolf - Simple Version (20 分)

乙级时候就做过了,没想到又忘了,没做出来先假设有两个狼人,判断是否有两个人说谎,且一狼一人狼说谎的两种情况1. 狼说自己是平民2. 说平民是狼人说谎同理#include<bits/stdc++.h>using namespace std;const int maxn = 105;int main(){ int n; cin>>n; ...

2019-10-07 19:28:29 649

原创 1147 Heaps (30 分)

先判断为大根堆或者其他,然后后序遍历#include<iostream>using namespace std;const int e=1005;int n,m,judge;int a[e];bool maxheap(){ for(int i=1;i<=m;i++){ if(i*2>m) break; if(a[i*2]>a[i])...

2019-10-07 19:23:34 228

原创 1146 Topological Order (25 分)

拓扑排序,不需要用栈,边输入边处理对于给出的序列,输入顶点a时,a的入度必须已经为0,否则不为拓扑#include<iostream>#include<vector>#include<stack>using namespace std;const int e=1005;vector<int> v[e];stack<int&...

2019-10-07 19:19:24 77

原创 1145 Hashing - Average Search Time (25 分)

1. Msize是表的大小,如果不是素数,要变为比他大且最近的素数2. 向表中插入值,根据 h[ a% msize]= a; 如果有冲突,用二次探测,且d只需取正数, 如果没插入成功,需要输出3. 查找,并计算查找次数,查找情况有三种:没插入成功;不存在此数;查找成功#include<bits/stdc++.h>using namespac...

2019-10-07 19:14:05 134

原创 pat甲级 1141 PAT Ranking of Institutions

模拟题,存储有点麻烦用两个map存储,一个存学校人数,一个存分数,然后把两个map的内容,存在结构体中,用sort排序#include<iostream>#include<cstdio>#include<cmath>#include<map>#include<vector>#include<algorithm&g...

2019-10-07 18:59:43 95

原创 树状数组+题目详解

树状数组直接搜狗百科就行(不行再去B站)巨佬写的#include<iostream>using namespace std;const int maxn=1e5;int f[maxn];int n;int lowbit(int x){ return x&(-x);}void update(int i,int x){//将i位置+x while(i&...

2019-09-29 10:37:58 280

原创 kosaraju 和 tarjan算法详解(强连通分量)

定 义 在有向图G中,如果任意两个不同的顶点相互可达,则称该有向图是强连通的。有向图G的极大强连通子图称为G的强连通分支。 转置图的定义:将有向图G中的每一条边反向形成的图称为G的转置GT 。(注意到原图和GT 的强连通分支是一样的)Korasaju算法 1.深度优先遍历G,算出每个结点u的结束时间f[u],起点如何选择无所谓。 每个结点的结束时间和开始时间是dfs序,开始时...

2019-09-18 20:23:11 1346

原创 ACM-ICPC 2018南京赛区网络预赛 Sum

题目链接根据算术基本定理,(其中pi为素数,且p1<p2<p3..)猜想:f(a*b)=f(a)*f(b),a,b互质不妨假设, ( a是最小的素因子)if n为质数 ,那么f(n)=2else if 存在x>=3,那么f(n)=0, 因为n分成两份,有三个相同pi,必有两个pi分到同一组else if 存在 x<=2 &a...

2019-09-02 13:56:12 111

原创 ACM-ICPC 2018焦作赛区网络预赛 give candies 快速幂+数论

题目链接这题容易发现结果为mod p, 难点在于n的数据太大,所以要先对 n-1 进行降幂处理用到一个降幂公式( 因为1000000007是素数,且与2互质,所以可以用此公式 )只要把降幂公式中的 n换成n-1就行(n-1) %( p-1) = n%p -1所以只要对n取模再 -1,然后用快速幂不过n太大,不能用 long long ,用string存储就可以。...

2019-09-01 20:56:44 110

原创 堆优化的dijkstra(手写堆)

利用小根堆优化每次查找dis数组最短距离的复杂度只要看过小根堆,这个代码并不难,但有细节需要处理我是手写堆,但用priority_queue更简单#include<bits/stdc++.h>using namespace std;const int maxn=1000;int f[maxn][maxn];int vis[maxn];int d[maxn];c...

2019-07-21 15:01:14 631

原创 dfs序

首先有两个数组 in[],out[],分别记录dfs遍历每个节点的起始时间和结束时间,(时间其实就是一个编号,从一开始)这样说有点抽象,举个例子先给出上图的dfs代码,然后模拟#include<bits/stdc++.h>using namespace std;int f[1000][1000];int n,tot; //tot是全局变量,不随递归走 int ...

2019-07-21 14:53:50 221

原创 最小生成树

糖炒栗之博客kruskal算法#include<iostream>#include<map>#include<queue>#include<algorithm>#include<cstring>using namespace std;struct dot{ int x,y,v;}p[120],a[120];in...

2019-07-21 14:53:03 145

原创 关键路径

AOE网用顶点表示事件,弧表示活动,弧的权表示活动持续时间关键路径从源点(入度为0)到汇点(出度为0)最长的路径路径长度路径上各活动持续时间之和(权值之和)求解关键路径1、首先需要定义四个描述量 ve(j) : 表示事件 j (用顶点表示)最早发生时间 例如:ve(v1)=0, ve(v2)=30vl(j) : 表示事件j的最迟发生...

2019-07-21 14:52:32 293

原创 枚举子集合

增量构造法构建集合,一次选出一个元素放入集合(可重集同样适用)#include<bits/stdc++.h>using namespace std;int n;int a[100],b[100];void subset(int cnt,int k){ for(int i=1;i<cnt;i++) cout<<b[i]<<" ...

2019-07-21 14:51:15 131

原创 邻接表存储图

如果没有权值,直接用vector就行,有权值就用这种例如:1 4 91 2 51 3 7[1].next=0;[1].to=4;[1].dis=9;head[1]=1;[2].next=1;[2].to=3;[2].dis=8;head[1]=2;[3].next=2;[3].to=3;[3...

2019-07-21 14:50:34 150

原创 枚举求全排列(递归与next_permutation函数)

第一种方法:递归待求数组排列中不能有重复元素void perm(int a[],int cnt){ if(cnt==n+1){ cout<<.....; return ; } else{ 依次考虑a数组中的每个元素v perm(在s中添加v构成新数列);//s为储存数组 }#include<bits/...

2019-07-20 07:28:57 285

原创 拓扑排序+旅行计划

有向无环图无环且有向,是图不是树,一个点可能有多个前驱点有向树有向无环图AOV网:以顶点表示活动,用弧表示活动优先级的有向图,不能有回路,用于拓扑排序AOE网用边表示活动,用于关键路径拓扑排序在AOV网中没有回路的前提下,将全部活动排列成线性序列,且前驱在前,后继在后,称为拓扑排序(排序结果并不唯一)方法在有向图中选一个没有前驱的顶点并且输出(即...

2019-07-12 17:12:15 177

原创 莫比乌斯函数

莫比乌斯的定义式mu[x]=(-1)^k, x不含素因子平方项,k为素因子个数 =0 , 其他1~n之间的莫比乌斯函数#include<iostream>#include<string>#include<cstdio>#include<algorithm>#include<cstring>#...

2019-06-25 21:16:39 244

原创 最大连续子序列和(动态规划含二维矩阵)

{5,-3,4,2} ,最大连续子序列和为8设第 i 个数的最大连续子序列和为f[i],f[i]=max(f[i-1]+a[i],a[i]);最后对f数组取最大值openjudge里的一道题http://noi.openjudge.cn/ch0406/1768/这是个二维数组,二维数组与一维数组求解的最大差别在于二维数组需要考虑这个矩阵有几行不妨假设行数为i~j ,...

2019-06-12 20:40:33 186

原创 Dijkstra 和 Bellman-Ford算法以及spfa判断负环路

在说bellman_ford算法前,先解释dijkstra算法的思想我们用 dis[ ] 数组来存放 i 点到起点的最短距离1、首先它是从起点开始,广度遍历,逐层更新,靠近起点的先被确定最终距离2、如果我们要更新 dis[y] 的最短距离,则一定用比它距离要短的 dis[x] 来更新 如果dis[y]为全局最短,则dis[y] 不会再被更新,因为没有更短的 dis[x]值可以来...

2019-06-02 16:33:03 765

原创 图论之最短路径(最优乘车)

头一次用彩色的字体,interesting~(要是有表情包就更好了>_<)scanf的返回值类型为int,值由后面的参数决定,返回值表示成功读入的数据的个数  如:scanf("%d%d", &a, &b);  如果a和b都被成功读入,那么scanf的返回值就是2  如果只有a被成功读入,返回值为1  如果a和b都未被成功读入,返回值为0  如果遇到错误或...

2019-05-26 16:12:54 1232

空空如也

空空如也

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

TA关注的人

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