自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Tarjan找强连通分量

概念强连通如果在一张图中有一条路径连接两点,则这两点强连通。(间接连接也可以)(主要针对单向图)强连通图如果一张图中任意两点都强连通,则这张图为强连通土。强连通分量如果一张图的某个子图为强连通图,则称其为强连通分量。算法思路该算法主要用于有向图。对于每一个点,赋予两个属性:dfn和low。dnf记录该点被访问的次序。low记录与该点联通的所有点的dfn的最小值。对访问每一个点时:...

2019-11-07 20:39:53 206

原创 Tarjan求LCA

LCA树上最近公共祖先的简称算法思路这种求LCA的算法比较常用,而且是离线的。需要用到并查集数据类型

2019-11-07 11:19:44 248

原创 并查集

概要复杂的咱也不懂,咱也不敢问。主要是用来表明数据间的所属关系。用在图中就可以用来表示点的连接关系。算是比较方便。可实现操作判断两个点是否属于同一组或合并两组代码#include<iostream>#include<cmath>#include<algorithm>using namespace std;int n,m;int fa[5005...

2019-10-29 15:30:21 136

原创 图论基础--存储边的4种方式

邻接矩阵作为最简单的存边方式,那当然是要掌握啦。基本原理就是利用f[n][n]来存边。f[i][j]的值若为真,则表明I与j间存在边,否则没有边。既可以存单向边也可以存双向边。同时f也可以存储边的权值。另外根据矩阵乘法的定义,f*f可以表示经过一个中间点后的链接状态。缺点也很明显啦,所占内存过大(尤其是存双向边时),遍历寻找下一个点时效率低等。总体来说数据不是太刁钻时就可以用。相关复杂度时间...

2019-10-29 14:58:01 1025

原创 HOJ-1006 - Weird Clock

题目HOJ-1006 - Weird Clock思路分析明显是道数学题(数学竞赛实锤 ) 。然而我不会推公式。所以我又去百度题解了(没错,我就是这么不要脸) ,并得出如下公式s(1+d)x≡0(mod60)  ⟺  (1+d)x≡0(mod(60/gcd(60,s)) s(1+d)^x\equiv 0(mod60) \iff (1+d)^x\equiv 0(mod (60/gcd(...

2019-10-24 11:48:24 178

原创 HOJ-1005 - Fast Food

题目HOJ-1005 - Fast Food思路分析一开始看数据太大就知道肯定要用动态规划,但失败了(日常蒟蒻 1/∞)。百度题解后才发现自己的状态转移方程有误。状态不应该由前一个餐馆转移过来,应该从上一次建立的存储点转移过来。因此设计状态f[i][j]表示前j个餐馆设立了i个存储点时的最优解。则状态转移方程为f[i][j]=min{f[i][j],f[i−1][k]+g[k][j]} f...

2019-10-24 11:04:01 241

原创 如何插入数学公式

Cmd Markdown 公式指导手册

2019-10-24 10:54:56 227

原创 HOJ-1004-Prime Palindromes

题目链接HOJ-1004-Prime Palindromes思路分析一开始想先用欧拉筛筛出所有素数之后在判断是否回文,结果超时。(标准结局) 后来看了下别人的思路,大部分是先自己创造回文数,再判断是否是素数。创造时也有技巧。因为存在一个定理:偶数位回文数除了11外均为合数。这样就可以只创造...

2019-10-24 10:36:59 210

原创 判断两个字符串相等

判断连个字符串相等不能用==,这样的意思是判断两个字符数组的首地址是否相等。判断相等要用strcmp(s1,s2)==0;

2019-10-22 20:46:40 5989 1

原创 注意输入时的换行符问题

scanf(“ %c”)可解决空白符问题(空格,tab,换行符)

2019-10-22 20:44:30 444

原创 相关知识总结

申请空间1)malloc(个数sizeof(数据类型)),返回值为void,应用时注意数据类型转换,返回空间首地址2)calloc()用法与上一致,且会自动赋值所有空间为03)注意判断是否申请成功if(p==NULL) { exit(1); } 释放空间1)只可释放动态申请的空间2) free(指针)修改分配的空间1) realloc(指针,新空...

2019-10-22 20:42:08 131

原创 C语言输入输出的那些坑

scanf中%-2c,-指左对齐,2指宽度为2printf输出float和double都可以用%f,double还可以用%lf。scanf输入float用%f,double输入用%lf,不能混用code blocks编译器标准为c89不是c99,容易出现long double型数据输出错误,解决方法:之后按Lf输入输出就好了...

2019-10-22 20:36:27 413

原创 知识整理

static声明变量时,若位于函数内声明,则具有以下特点 (1)下次访问时,其值为上次最后访问时的值(2)下次访问时不会再次执行赋初值的语句,且一开始未赋初值则默认为0(3)有static声明的变量与同名auto变量不冲突.若位于外部声明:在定义不需要与其他文件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同文件同名变量的冲突,且不会误使用。ext...

2019-10-22 20:32:18 135

原创 求最大公约数(GCD)

背景求GCD在与求余有关的运算中经常使用。这里我只记录了目前我用的最顺手的一种算法–辗转相除法。效率可能比较慢,因为包含求余运算,但写起来很简单。有效率跟高的算法的话,希望能在留言区留言。原理a可以表示成a = kb + r(a,b,k,r皆为正整数,且r<b),则r = a mod b假设d是a,b的一个公约数,记作d|a,d|b,即a和b都可以被d整除。而r = a - kb,...

2019-10-22 20:22:29 255

原创 素数筛--欧拉筛

描述其基本思想是把所有质数的倍数都标记为合数,剩下的就是质数。但光这样筛选的话有很多数会被重复筛出。比如12可以被4筛出,也可以被6筛出。这样明显会降低效率。欧拉筛提供了一种避免重复筛出的方法,从而提高了效率。关键if(i%prim[j]==0) break;这句代码就是欧拉筛的精髓。怎么理解呢?首先一个合数一定可以拆分成两个数的乘积。要想让这个数只被筛一次,我们可以规定只让它被它的最小的...

2019-10-22 20:12:25 436

原创 文件操作知识总结

打开文件fopen(“路径与文件名(包含格式)“,”读写类型“),返回值为文件型指针r:以只读的方式打开文本文件,文件必须已存在w:以只写的方式创建并打开文本文件,已存在的文件将被覆盖a:以只写的方式打开文本文件,向文件尾部添加数据,文件必须已存在+:与以上字符结合,表示以读写的方式打开文本文件。b:与以上字符结合,表示以二进制形式打开文件关闭文件fc...

2019-10-22 15:27:20 370

原创 指针基本知识总结

指针赋值:int *a,b,*c;a=&b;a=c;(注意只有这两种方式)函数指针:void add(int a,int b);(*add)(a,b);int *p;scanf(“%d”,p)是非法语句指针与一维数组:1)int a[10],scanf(a+i),printf(*(a+i))2)int a[10],*p,p=a,scanf(p++),printf(...

2019-10-22 15:18:14 220

原创 字符串基本知识总结

字符串利用字符数组存储,且字符串结束位置会有一个‘\0’,它也占据一个位置,但不计入字符串位数字符串初始化:char c[]=”Hello”;字符串输入输出:判断str[i]!=’\0’,这种无法输入空格%s整体输入输出,也无法输入空格gets(str)可以读入空格(同时也读走缓冲区的换行符),puts(str)遇到第一个’\0’停止输出并自动输出换行符fgets(s...

2019-10-22 15:08:42 230

空空如也

空空如也

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

TA关注的人

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