<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Edith_Finch的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Edith_Finch</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Edith_Finch]]></copyright><item><title><![CDATA[Tarjan找强连通分量]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102951447</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102951447</guid><author>Edith_Finch</author><pubDate>Thu, 07 Nov 2019 20:39:53 +0800</pubDate><description><![CDATA[概念
强连通
如果在一张图中有一条路径连接两点，则这两点强连通。（间接连接也可以）（主要针对单向图）
强连通图
如果一张图中任意两点都强连通，则这张图为强连通土。
强连通分量
如果一张图的某个子图为强连通图，则称其为强连通分量。
算法思路
该算法主要用于有向图。对于每一个点，赋予两个属性：dfn和low。dnf记录该点被访问的次序。low记录与该点联通的所有点的dfn的最小值。对访问每一个点时：
...]]></description><category></category></item><item><title><![CDATA[Tarjan求LCA]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102799918</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102799918</guid><author>Edith_Finch</author><pubDate>Thu, 07 Nov 2019 11:19:44 +0800</pubDate><description><![CDATA[LCA
树上最近公共祖先的简称
算法思路
这种求LCA的算法比较常用，而且是离线的。需要用到并查集数据类型

]]></description><category></category></item><item><title><![CDATA[并查集]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102800489</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102800489</guid><author>Edith_Finch</author><pubDate>Tue, 29 Oct 2019 15:30:21 +0800</pubDate><description><![CDATA[概要
复杂的咱也不懂，咱也不敢问。主要是用来表明数据间的所属关系。用在图中就可以用来表示点的连接关系。算是比较方便。
可实现操作
判断两个点是否属于同一组或合并两组
代码
#include&lt;iostream&gt;
#include&lt;cmath&gt;
#include&lt;algorithm&gt;
using namespace std;
int n,m;
int fa[5005...]]></description><category></category></item><item><title><![CDATA[图论基础--存储边的4种方式]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102720400</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102720400</guid><author>Edith_Finch</author><pubDate>Tue, 29 Oct 2019 14:58:01 +0800</pubDate><description><![CDATA[邻接矩阵
作为最简单的存边方式，那当然是要掌握啦。基本原理就是利用f[n][n]来存边。f[i][j]的值若为真，则表明I与j间存在边，否则没有边。既可以存单向边也可以存双向边。同时f也可以存储边的权值。另外根据矩阵乘法的定义，f*f可以表示经过一个中间点后的链接状态。缺点也很明显啦，所占内存过大（尤其是存双向边时），遍历寻找下一个点时效率低等。总体来说数据不是太刁钻时就可以用。
相关复杂度
时间...]]></description><category></category></item><item><title><![CDATA[HOJ-1006 - Weird Clock]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102719147</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102719147</guid><author>Edith_Finch</author><pubDate>Thu, 24 Oct 2019 11:48:24 +0800</pubDate><description><![CDATA[题目
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(...]]></description><category></category></item><item><title><![CDATA[HOJ-1005 - Fast Food]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102718166</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102718166</guid><author>Edith_Finch</author><pubDate>Thu, 24 Oct 2019 11:04:01 +0800</pubDate><description><![CDATA[题目
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...]]></description><category></category></item><item><title><![CDATA[如何插入数学公式]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102718662</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102718662</guid><author>Edith_Finch</author><pubDate>Thu, 24 Oct 2019 10:54:56 +0800</pubDate><description><![CDATA[Cmd Markdown 公式指导手册
]]></description><category></category></item><item><title><![CDATA[HOJ-1004-Prime Palindromes]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690484</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690484</guid><author>Edith_Finch</author><pubDate>Thu, 24 Oct 2019 10:36:59 +0800</pubDate><description><![CDATA[题目链接
HOJ-1004-Prime Palindromes
思路分析
一开始想先用欧拉筛筛出所有素数之后在判断是否回文，结果超时。（标准结局） 后来看了下别人的思路，大部分是先自己创造回文数，再判断是否是素数。创造时也有技巧。因为存在一个定理：偶数位回文数除了11外均为合数。
这样就可以只创造

...]]></description><category></category></item><item><title><![CDATA[判断两个字符串相等]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690378</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690378</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 20:46:40 +0800</pubDate><description><![CDATA[判断连个字符串相等不能用==,这样的意思是判断两个字符数组的首地址是否相等。判断相等要用strcmp(s1,s2)==0;

]]></description><category></category></item><item><title><![CDATA[注意输入时的换行符问题]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690342</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690342</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 20:44:30 +0800</pubDate><description><![CDATA[scanf（“ %c”）可解决空白符问题（空格，tab,换行符）

]]></description><category></category></item><item><title><![CDATA[相关知识总结]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690211</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690211</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 20:42:08 +0800</pubDate><description><![CDATA[申请空间
1）malloc(个数sizeof(数据类型))，返回值为void，应用时注意数据类型转换，返回空间首地址
2)calloc()用法与上一致，且会自动赋值所有空间为0
3)注意判断是否申请成功

if（p==NULL)  
{  
   exit(1);  
}  


释放空间
1）只可释放动态申请的空间
2） free(指针)


修改分配的空间
1）  realloc(指针,新空...]]></description><category></category></item><item><title><![CDATA[C语言输入输出的那些坑]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690146</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102690146</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 20:36:27 +0800</pubDate><description><![CDATA[scanf中%-2c,-指左对齐，2指宽度为2


printf输出float和double都可以用%f，double还可以用%lf。


scanf输入float用%f，double输入用%lf，不能混用


code blocks编译器标准为c89不是c99，容易出现long double型数据输出错误，解决方法：

之后按Lf输入输出就好了



...]]></description><category></category></item><item><title><![CDATA[知识整理]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102689976</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102689976</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 20:32:18 +0800</pubDate><description><![CDATA[static声明变量时，若位于函数内声明，则具有以下特点	
(1)下次访问时，其值为上次最后访问时的值
(2)下次访问时不会再次执行赋初值的语句，且一开始未赋初值则默认为0
(3)有static声明的变量与同名auto变量不冲突.若位于外部声明：在定义不需要与其他文件共享的全局变量时，加上static关键字能够有效地降低程序模块之间的耦合，避免不同文件同名变量的冲突，且不会误使用。


ext...]]></description><category></category></item><item><title><![CDATA[求最大公约数（GCD）]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102689840</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102689840</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 20:22:29 +0800</pubDate><description><![CDATA[背景
求GCD在与求余有关的运算中经常使用。这里我只记录了目前我用的最顺手的一种算法–辗转相除法。效率可能比较慢，因为包含求余运算，但写起来很简单。有效率跟高的算法的话，希望能在留言区留言。
原理
a可以表示成a = kb + r（a，b，k，r皆为正整数，且r&lt;b），则r = a mod b
假设d是a,b的一个公约数，记作d|a,d|b，即a和b都可以被d整除。
而r = a - kb，...]]></description><category></category></item><item><title><![CDATA[素数筛--欧拉筛]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102689275</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102689275</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 20:12:25 +0800</pubDate><description><![CDATA[描述
其基本思想是把所有质数的倍数都标记为合数，剩下的就是质数。但光这样筛选的话有很多数会被重复筛出。比如12可以被4筛出，也可以被6筛出。这样明显会降低效率。欧拉筛提供了一种避免重复筛出的方法，从而提高了效率。
关键
if(i%prim[j]==0) break;
这句代码就是欧拉筛的精髓。怎么理解呢？首先一个合数一定可以拆分成两个数的乘积。要想让这个数只被筛一次，我们可以规定只让它被它的最小的...]]></description><category></category></item><item><title><![CDATA[文件操作知识总结]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102683219</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102683219</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 15:27:20 +0800</pubDate><description><![CDATA[打开文件


fopen(“路径与文件名（包含格式）“，”读写类型“)，返回值为文件型指针


r:以只读的方式打开文本文件，文件必须已存在


w:以只写的方式创建并打开文本文件，已存在的文件将被覆盖


a：以只写的方式打开文本文件，向文件尾部添加数据，文件必须已存在


+:与以上字符结合，表示以读写的方式打开文本文件。


b:与以上字符结合，表示以二进制形式打开文件


关闭文件

fc...]]></description><category></category></item><item><title><![CDATA[指针基本知识总结]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102683017</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102683017</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 15:18:14 +0800</pubDate><description><![CDATA[指针赋值：int *a,b,*c;a=&amp;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(...]]></description><category></category></item><item><title><![CDATA[字符串基本知识总结]]></title><link>https://blog.youkuaiyun.com/Edith_Finch/article/details/102682873</link><guid>https://blog.youkuaiyun.com/Edith_Finch/article/details/102682873</guid><author>Edith_Finch</author><pubDate>Tue, 22 Oct 2019 15:08:42 +0800</pubDate><description><![CDATA[字符串利用字符数组存储，且字符串结束位置会有一个‘\0’，它也占据一个位置，但不计入字符串位数


字符串初始化：char c[]=”Hello”;


字符串输入输出：



判断str[i]!=’\0’，这种无法输入空格
%s整体输入输出，也无法输入空格
gets(str)可以读入空格(同时也读走缓冲区的换行符)，puts(str)遇到第一个’\0’停止输出并自动输出换行符
fgets(s...]]></description><category></category></item></channel></rss>