<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[A_Comme_Amour的博客]]></title><description><![CDATA[如果你认为曾经的你很辉煌，那只能说明现在的你混的还不够好。]]></description><link>https://blog.youkuaiyun.com/A_Comme_Amour</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; A_Comme_Amour]]></copyright><item><title><![CDATA[[补题]ICPC Mid-Central USA Region 2019]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/119877979</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/119877979</guid><author>A_Comme_Amour</author><pubDate>Mon, 23 Aug 2021 23:06:05 +0800</pubDate><description><![CDATA[8.19的牛客模拟赛
暑假里做了很多这种区域赛，但是还没有补题，最近会慢慢补完
传送门
A. Commemorative Race
题意
在一个有向无环图中，将其最长路的一条边删掉，然后再从这个起点开始，求所能达到的最长路径中的最小值。
题解
通过两次dfsdfsdfs解决，首先建立一个“超级源点”，向所有的点连边

第一次dfsdfsdfs，从“超级源点”开始，处理出以iii点为起点能够达到的最长路径和次长路径长度——maxlen[i]maxlen[i]maxlen[i]和maxlen1[i]maxlen]]></description><category></category></item><item><title><![CDATA[luoguP1621 集合]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/115311396</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/115311396</guid><author>A_Comme_Amour</author><pubDate>Mon, 29 Mar 2021 21:14:51 +0800</pubDate><description><![CDATA[链接
题目
Caima 给你了所有 [a,b] 范围内的整数。一开始每个整数都属于各自的集合。每次你需要选择两个属于不同集合的整数，如果这两个整数拥有大于等于 pp 的公共质因数，那么把它们所在的集合合并。
重复如上操作，直到没有可以合并的集合为止。
现在 Caima 想知道，最后有多少个集合。
就是一道简单的并查集的问题，我写了好久，错了好多地方……
错误：
1.在判断两个数能否合并的函数中，写了一句if (pri[i]*2 &gt; min(x, y)) break;本来想优化，但是这样就枚举不到小正数]]></description><category></category></item><item><title><![CDATA[[蓝桥杯][2013年第四届真题]危险系数]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/115161663</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/115161663</guid><author>A_Comme_Amour</author><pubDate>Wed, 24 Mar 2021 09:45:18 +0800</pubDate><description><![CDATA[问题描述
抗日战争时期，冀中平原的地道战曾发挥重要作用。
地道的多个站点间有通道连接，形成了庞大的网络。但也有隐患，当敌人发现了某个站点后，其它站点间可能因此会失去联系。
我们来定义一个危险系数DF(x,y)：
对于两个站点x和y  (x  !=  y),  如果能找到一个站点z，当z被敌人破坏后，x和y不连通，那么我们称z为关于x,y的关键点。相应的，对于任意一对站点x和y，危险系数DF(x,y)就表示为这两点之间的关键点个数。
本题的任务是：已知网络结构，求两站点之间的危险系数。
题解
这是一道dfs过]]></description><category></category></item><item><title><![CDATA[[蓝桥杯][历届试题]九宫重排]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/115151529</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/115151529</guid><author>A_Comme_Amour</author><pubDate>Tue, 23 Mar 2021 23:47:26 +0800</pubDate><description><![CDATA[题目链接
如下面第一个图的九宫格中，放着  1~8  的数字卡片，还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动，可以形成第二个图所示的局面。

我们把第一个图的局面记为：12345678.
把第二个图的局面记为：123.46758
显然是按从上到下，从左到右的顺序记录数字，空格记为句点。
本题目的任务是已知九宫的初态和终态，求最少经过多少步的移动可以到达。如果无论多少步都无法到达，则输出-1。
题解
这是我写过的第一道双向BFS的问题（大雾）
双向BFS的一个好处就是从七点和]]></description><category></category></item><item><title><![CDATA[二分_水题整理]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/115049883</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/115049883</guid><author>A_Comme_Amour</author><pubDate>Sun, 21 Mar 2021 19:45:10 +0800</pubDate><description><![CDATA[感觉自己现在的水平太洼了，连二分这种题都要调好久。感觉二分总是写不对啊，我真是太水了。。。
T1路标设置
在n个数之中插入k个数，使得相邻的两个数之间的差值的最大值最小。
像这种最大值最小类型的题目，都是考虑使用二分策略；
但是这道题我在第一次做的时候却想错了，我使用的贪心，我将相邻的两个数之间的差值进行排序，然后每次选出差值最大的一组数，然后从他们中间插入一个数。
这样做的错误性在于 忽略了相邻的差值最大  这个条件。
但是，我学会了使用priority_queue (也就是一个大根堆) 这个STL ST]]></description><category></category></item><item><title><![CDATA[从头再来——记录一些小问题]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/113934228</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/113934228</guid><author>A_Comme_Amour</author><pubDate>Tue, 16 Mar 2021 18:28:17 +0800</pubDate><description><![CDATA[1.getchar的用法

ch = getchar();
	只能接受单个字符， 输入的数字按照字符处理
	输入多于一个字符时，只接收第一个字符
	getchar直到按回车键才结束，可用于暂停程序的运行，直到收到下一个回车键
	程序中有两个以上的getcar函数，应该一次性输入所有字符，再按回车否则会把回车传给后面的函数
2.比较 ‘\n’ 和endl

通常使用换行符\n，在其他情况下则使用控制符endl。一个差别是，endl确保程序继续运行前刷新输出（将其立即显示在屏幕上）；而使用“\n”不能提供这样.]]></description><category></category></item><item><title><![CDATA[回首向来萧瑟处  也无风雨也无晴]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/81435289</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/81435289</guid><author>A_Comme_Amour</author><pubDate>Thu, 09 Aug 2018 08:48:30 +0800</pubDate><description><![CDATA[转眼间，离开始学OI，也有一年多了，退役也有三四个月的时间了。blog有好长时间没有更。近期处理了一些评论，把之前写的博文（因为OI学的不深不浅，文章也写的不怎么样）中明显的错误，并对有评论提出的建议，都一一做了修正。在这里向，给我指出错误的人表示感谢。感谢你们！ 
以后，这里的blog还是会常常更新的，胡乱发一些东西，如果大家不嫌弃也可以过来看看。 
什么时候退役的呢？SDOI2018 R1之后...]]></description><category></category></item><item><title><![CDATA[[BZOJ 1966] [Ahoi2005]VIRUS 病毒检测（Trie / dp）]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/80067350</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/80067350</guid><author>A_Comme_Amour</author><pubDate>Tue, 24 Apr 2018 17:08:03 +0800</pubDate><description><![CDATA[题目

传送门

题解

方法一：trie树 
标签是AC自动机，但明显不是AC自动机啊，根本没有失配指针的过程,只能叫Tire树吧 
我们对每一个单词建立好Tire树之后，在树上进行bfs，进行匹配

代码



#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;cstring&amp;gt;
#include &amp;lt;bitset&amp;gt;
using namespace std...]]></description><category></category></item><item><title><![CDATA[[BZOJ2938][POI2000]病毒(AC自动机+dfs)]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/80039917</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/80039917</guid><author>A_Comme_Amour</author><pubDate>Sun, 22 Apr 2018 16:21:27 +0800</pubDate><description><![CDATA[题目

传送门

题解

这是一道比较锻炼思维的题，让我更加深的理解失配指针的作用 
一般的AC自动机都是尽量多的匹配，这道题希望无限长，也就是希望能失配就失配，我们构造出trie树之后，在trie图（注意现在变成了一个图）上找环即可； 
几点优化：根据trie树的性质.如果某个点的后缀是病毒，那么这个点肯定不能选 
在dfs中，建立两个bool数组，一个需要回溯——用于在这条路径上找环，另一个不...]]></description><category></category></item><item><title><![CDATA[[BZOJ3172][Tjoi2013]单词(AC自动机)]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/80038785</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/80038785</guid><author>A_Comme_Amour</author><pubDate>Sun, 22 Apr 2018 14:32:30 +0800</pubDate><description><![CDATA[题目

传送门



题解

AC自动机 
AC自动机第一题，感觉做起来非常不顺，感觉难点在于处理单词重叠的问题 
大体的思路应该是，我们把每个单词出现的字母在fail树上进行累加，然后建立bfs序，把单词的字母的ans累加到单词的第一个字母上（应该是这样吧？），输出答案； 
另一种实现方法：这是我刚开始想到的，在每个单词之间添加一个'#''#''#'分隔组成文章，在处理重叠单词上：我们的mp[k...]]></description><category></category></item><item><title><![CDATA[[BZOJ4516][Sdoi2016]生成魔咒（后缀数组+链表）]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79987498</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79987498</guid><author>A_Comme_Amour</author><pubDate>Wed, 18 Apr 2018 12:37:09 +0800</pubDate><description><![CDATA[题目

传送门



题解

这道题还是比较好的； 
要求出每一个前缀本质不同的后缀的个数，那么我们可以把原序列倒过来，然后实际上就是对于每一个后缀求与其它后缀不重复的前缀个数，也即是后缀长度减去height值； 
求出某一个后缀对答案的贡献之后，他不应该停留在元序列中对后续答案的求解产生影响，所以应该把它删除； 
在实现方式上，可以使用链表，与平衡树的操作有些类似



代码



#inclu...]]></description><category></category></item><item><title><![CDATA[[bzoj4566][HAOI2016]找相同字符(后缀数组)]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79981907</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79981907</guid><author>A_Comme_Amour</author><pubDate>Tue, 17 Apr 2018 22:19:12 +0800</pubDate><description><![CDATA[题目

传送门



题解

这里：把两个串用一个很大的字符连接起来，求一个后缀数组。  
考虑怎样暴力的算答案。  
在rank&amp;nbsp;rankrank数组中从前往后枚举起点，对于每个枚举的起点，都暴力的往后扫，扫的过程中维护一个height&amp;nbsp;heightheight的最小值。每到一个点的时候，如果这个点跟起点不属于一个串，就将答案加上当前的最小值，这样是O(n2)的考虑这个还能怎...]]></description><category></category></item><item><title><![CDATA[[BZOJ1031] [JSOI2007]字符加密Cipher(后缀数组)]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79981813</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79981813</guid><author>A_Comme_Amour</author><pubDate>Tue, 17 Apr 2018 22:13:24 +0800</pubDate><description><![CDATA[题目

传送门

题解

裸 
加密序列为所有排列排序之后的最后一个字符 
把环展成链，统计答案的时候注意判断在一条链内即可

代码



#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;cstring&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;
const i...]]></description><category></category></item><item><title><![CDATA[[BZOJ3238][AHOI2013]差异（后缀数组+单调栈）]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79946707</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79946707</guid><author>A_Comme_Amour</author><pubDate>Sun, 15 Apr 2018 09:37:48 +0800</pubDate><description><![CDATA[题目

传送门 


题解

求一个定值减去所有后缀组合的lcp*2之和 
O(n2)O(n2)O(n^2)  
枚举所有的1≤i&amp;lt;j≤n1≤i&amp;lt;j≤n1\leq iO(1)O(1)O(1)求出lcp(Ti,Tj)lcp(Ti,Tj)lcp(T_i,T_j);n的范围无法承受 
O(Nlog2N)O(Nlog2N)O(Nlog_2N) 
根据height[]height[]height...]]></description><category></category></item><item><title><![CDATA[【BZOJ1717】[Usaco2006 Dec]Milk Patterns 产奶的模式（后缀数组+二分）]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79944857</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79944857</guid><author>A_Comme_Amour</author><pubDate>Sat, 14 Apr 2018 22:05:06 +0800</pubDate><description><![CDATA[题目

传送门

题解

求重复至少k次的最长子串长度（可重叠）  
求出sa数组和height数组之后，二分出一个长度，判断height数组中大于这个值的数是否有k个

代码



#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;cstring&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;iostream&amp;gt;
using ...]]></description><category></category></item><item><title><![CDATA[[IOI1994]北京2008的挂钟(搜索)]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79936515</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79936515</guid><author>A_Comme_Amour</author><pubDate>Sat, 14 Apr 2018 06:43:57 +0800</pubDate><description><![CDATA[题目

传送门Vijos

题解

这是一道比较经典的搜索题 
可见ABCDEFGHI九种方案每种最多使用4次，那么九重for循环枚举出出组合情况即可

代码



#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;cstring&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;iostream&amp;gt;
using namespace...]]></description><category></category></item><item><title><![CDATA[[BZOJ 1217] [HNOI2003]消防局的设立（贪心/dp）]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79899802</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79899802</guid><author>A_Comme_Amour</author><pubDate>Wed, 11 Apr 2018 17:15:29 +0800</pubDate><description><![CDATA[题目

传送门

题解

方法一：贪心 
对于深度最深的点，肯定需要设置消防站来覆盖它，那么消防站的选取就有多种方案：父亲。祖父。兄弟。显然放在爷爷那里是最优的； 
那么算法：每次选择一个深度最深且没有覆盖的点，在他的爷爷那里设置 
一种巧妙的O(n)：我们使用单调栈，按照bfs的顺序入栈（先进后出），那么最后取到的肯定是深度最大的。 
方法二：树形dp 
这道题和没有上司的舞会、战略游戏是比较像...]]></description><category></category></item><item><title><![CDATA[NoiOpenjudge水题选刷之_搜索]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79888954</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79888954</guid><author>A_Comme_Amour</author><pubDate>Tue, 10 Apr 2018 22:15:43 +0800</pubDate><description><![CDATA[1789:算24


  给出4个小于10个正整数，你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是，是否存在一种方式使得得到的表达式的结果等于24。 
  这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致（这里的除法定义是实数除法）。 
  比如，对于5，5，5，1，我们知道5 * (5 – 1 / 5) = 24，因此可以得到24。又比如，对于1...]]></description><category></category></item><item><title><![CDATA[小a和uim之大逃离（路径dp）]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79865189</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79865189</guid><author>A_Comme_Amour</author><pubDate>Mon, 09 Apr 2018 13:30:58 +0800</pubDate><description><![CDATA[题目

传送门 
在方格里起点终点任取，两个人绑在一起轮流取数，问有多少种方案可以使两个人取得的数在 %kkk  下相等

题解

其实这道题是没有思路的。看了题解。 
f[i][j][p][k]f[i][j][p][k]f[i][j][p][k] 表示在 （i,j）（i,j）（i,j）处，两个人取的数之差为ppp.此时是第k(0/1)k(0/1)k(0/1)个人取； 
初始化：f[i][j][a...]]></description><category></category></item><item><title><![CDATA[[BZOJ1088][SCOI2005]扫雷（DP/枚举暴力）]]></title><link>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79858907</link><guid>https://blog.youkuaiyun.com/A_Comme_Amour/article/details/79858907</guid><author>A_Comme_Amour</author><pubDate>Sun, 08 Apr 2018 22:06:17 +0800</pubDate><description><![CDATA[题目

传送门

题解

解法一：搜索 
我们可以发现，只要第一个位置确定了，下一个就都可以通过右边各自里的数唯一的推出来。 
那么结果就只有可能是0、1、2； 
那么我们两次chek判断是否合法即可 
解法二：dp 
f [i] [j] [k] 表示第i个位置； j表示有没有地雷 ；k表示下一个位置有没有地雷； 
分类讨论的思想，思路比较巧妙；

代码

代码一；



#include &amp;lt...]]></description><category></category></item></channel></rss>