<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_52688175的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_52688175</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_52688175]]></copyright><item><title><![CDATA[P8085 [COCI2011-2012#4] KRIPTOGRAM（kmp）]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/125019028</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/125019028</guid><author>qq_52688175</author><pubDate>Sat, 28 May 2022 16:12:55 +0800</pubDate><description><![CDATA[题目链接
题目的意思就是给你两个字符串数组，第二个字符串数组是密码本，每个字符串对应第一个数组的一个字符串，问你第二个字符串数组在第一个字符串数组第一次出现的位置
首先，怎样才是对应呢？
即每个字符串出现的频率和位置相同，像aabbc和bbccd是对应的
那么对应的条件是什么？
不难想到找到每个字符在这个字符串前一次出现的位置即可
如 aabbc 对应的数组 0 1 0 1 0
bbccd 对应的数组 0 1 0 1 0
重点来了
我们通过上面这样的方式，就将题意变成了最基础的kmp匹配了，
但是在实现过程]]></description><category></category></item><item><title><![CDATA[Codeforces Round #734 (Div. 3) (A-E题详解)]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/119082872</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/119082872</guid><author>qq_52688175</author><pubDate>Sun, 25 Jul 2021 16:54:10 +0800</pubDate><description><![CDATA[A. Polycarp and Coins
题意：t组测试数据，每组测试数据包含一个n，问你把n元钱平均分成1块钱和两块钱，输出一块钱和两块钱的个数
思路：先给两块钱，剩下的钱就是一块钱的，因为除法可能不平衡，在把差值抹掉平衡就好
#include&lt;cstdio&gt;
#include&lt;cstring&gt;
#include&lt;vector&gt;
#include&lt;queue&gt;
#include&lt;iostream&gt;
#include&lt;algorithm&g]]></description><category></category></item><item><title><![CDATA[约瑟夫环问题（递归求解）小白也绝对能看懂]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/119003602</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/119003602</guid><author>qq_52688175</author><pubDate>Thu, 22 Jul 2021 17:12:18 +0800</pubDate><description><![CDATA[这篇文章是写给一个同学的，他说自己太笨了学不会，其实是我讲不清楚，写篇博客给他吧，这样清楚一些
约瑟夫环人所皆知n个人，报到m死，问最后活下来的是原本序号几的人
先正着推  假设有10个人 ，报到3死
令这10个人的编号为0到9，那么就变成了报到2死
我们来推下一下情况：2死， 序列变成了0 1 3 4 5 6 7 8 9
让它变成7 8 0 1 2 3 4 5 6
这时候就是n-1人，我们怎么推出第二个死的这个人的原本序号呢，首先死的人一定是序号2，那么它原本的序号就是（2+(M-1)）%10=4,同理我]]></description><category></category></item><item><title><![CDATA[博弈题单（未完成）]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/118969683</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/118969683</guid><author>qq_52688175</author><pubDate>Wed, 21 Jul 2021 16:53:45 +0800</pubDate><description><![CDATA[博弈这个东西，感觉很有意思但又有点难上手，先从简单的题目开始刷起吧
我可是要成为博弈王的男人 （笑）
Calendar Game
这个题目的意思是，给你n个1900年1月1日到2001年11月4日中的某一天，
亚达和夏娃一次走一天或者走一个月，谁先走到2001年11月4日谁赢，亚当先走第一步，问你每次亚当能不能赢
这个是找规律题，每一次移动，月日和的奇偶性就发生了改变，除了9月30日和11月30日这两天，而如果要赢，先不考虑这特殊的两天，亚当必须一开始就在月日和为偶数的一天（11月4日为奇数）
那么特殊日子]]></description><category></category></item><item><title><![CDATA[迪杰特斯拉（链式前向星优化）]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/118728621</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/118728621</guid><author>qq_52688175</author><pubDate>Wed, 14 Jul 2021 15:41:27 +0800</pubDate><description><![CDATA[发现迪杰特斯拉的优化过一段时间不写就直接忘光光了，写个博客加深一下印象（这里默认是双向模板）
基础的迪杰特斯拉就不写了，只写优化
首先是这部分
void add(int x,int y,int z){
	to[++count1]=y;
	v[count1]=z;
	nex[count1]=fr[x];
	fr[x]=count1;
}

这个是记录所有单条能走通的路的，to数组代表去往哪里，v数组代表这条路的权值，nex数组是表示下一个节点的位置，fr数组表示前一个这个节点能过的路，你看到看不明白很正常，我]]></description><category></category></item><item><title><![CDATA[RMQ算法]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/118701951</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/118701951</guid><author>qq_52688175</author><pubDate>Tue, 13 Jul 2021 17:17:44 +0800</pubDate><description><![CDATA[什么是RMQ？
RMQ指的是求一个区间的某个数值（例如：最大值，最小值…)
首先还是要先推数学公式
设a[i]是要求区间最值的数列，F[i, j]F[i,j]表示从第i个数起连续2^j个数中的最大值。（DP的状态）
例如： a数列为：3 2 4 5 6 8 1 2 9 7
F[1，0]表示第1个数起，长度为2^0=1的最大值，其实就是3这个数。
同理 F[1,1]=max(3,2)=3,F[1，2]=max(3,2,4,5) = 5 F[1，3] = max(3,2,4,5,6,8,1,2) = 8;
并且]]></description><category></category></item><item><title><![CDATA[洛谷题单1-7 搜索题解]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/118671551</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/118671551</guid><author>qq_52688175</author><pubDate>Mon, 12 Jul 2021 15:56:52 +0800</pubDate><description><![CDATA[P1219 [USACO1.5]八皇后 Checker Challenge
这个是我最最开始的写法，也是篇幅最大的写法，每放一个棋子就考虑放这个棋子满不满足 每行每列，左斜线和右斜线都只有一个棋子，注意左斜线和右斜线是有规律的，右斜线的格子横纵坐标和都是一样的，左斜线上的横纵相减是一样的，左斜对角线下的左斜线差小于0，因为数组不能有负数，全加一个他们差的绝对值得最大值（随便一个更大得数也行，不能小），剩下的就是dfs爆搜了，没什么讲的  , 其实有个更简单的写法，但意思是一样的，就不贴上来了
#includ]]></description><category></category></item><item><title><![CDATA[AtCoder Beginner Contest 204-E]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/117918232</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/117918232</guid><author>qq_52688175</author><pubDate>Tue, 15 Jun 2021 13:39:20 +0800</pubDate><description><![CDATA[E-Rush Hour 2
题目大意是：有n个城市，从城市a到城市b会花费c + d /( t +1 )的时间，且0点的时候不允许通行，问能不能从城市1到城市n，能就输出花费的最小时间，不能输出 -1
这个题写的时候很容易想到优先队列的迪杰斯特拉，但是对这个图的存储需要花费一点小心思，需要保留一个最适合出发的时间，这个时间可以从给的公式t + = c + d /( t +1得到，根据高中的知识（a + b &gt; =2 *  sqrt( a * b)），可以得知，当t = sqrt （d）-1 时，是最适]]></description><category></category></item><item><title><![CDATA[差分数组浅析]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/117664339</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/117664339</guid><author>qq_52688175</author><pubDate>Mon, 07 Jun 2021 16:24:58 +0800</pubDate><description><![CDATA[什么是差分数组？
简单的来说，你有一个原始数组，而差分数组就是你原始数组的每一个数减上一个数
假设有原始数组a[10]，差分数组b[10]
那么就有
for(int i=1;i&lt;10;i++){
	b[i]=a[i]-a[i-1];
}

因为我们是从b[1]开始，所以要设个a[0]=0，而且a中的值是从a[1]开始存储
差分数组有什么用？
当我们要对一个区间进行修改，那么差分数组的作用一定就是求多次进行区间修改后的数组
为什么要用差分数组？
举个栗子

我们不难发现当一个区间同时加减一个数时，差分数]]></description><category></category></item><item><title><![CDATA[树状数组浅析（附数组离散化）]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/117153653</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/117153653</guid><author>qq_52688175</author><pubDate>Sat, 22 May 2021 13:16:26 +0800</pubDate><description><![CDATA[树状数组的作用：
   主要用于数组的单点修改&amp;&amp;区间求和

我们求数组的和一般是遍历，时间是O(n),每次修改一个数时间也是O(n)，树状数组的作用就是优化这个过程
树状数组的思路：
假设我们要计算比每个数大或小的数有几个 （题目）
树状数组（如t[8]）其实只有一个核心思想：用二进制形式存储数的和并进行运算
什么意思？
即我们每有一个数(如5)，它的二进制为101，那么首先t[5]++，然后5加它本身最低位的1代表的数（1）即101（5）+001（1）=110（6），变成110（6），那]]></description><category></category></item><item><title><![CDATA[双向dfs]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/116523110</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/116523110</guid><author>qq_52688175</author><pubDate>Sat, 08 May 2021 12:29:40 +0800</pubDate><description><![CDATA[为什么要用双向dfs？
如果dfs调栈超过1e5时，那么考虑双向dfs
当进行的变换是可逆的时候，且规定步数的上限时，可以使用双向dfs从源点和终点一起搜索。这样可以把时间从O(n)-&gt;O(n/2)
核心就是两个dfs分别处理一半的数据，然后进行调用
附上两个题目
题目一
AtCoder Beginner Contest 184-F
这是一个学长的代码
#include&lt;bits/stdc++.h&gt;
using namespace std;
#define ll long long
ll ]]></description><category></category></item><item><title><![CDATA[尺取法]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/116260708</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/116260708</guid><author>qq_52688175</author><pubDate>Thu, 29 Apr 2021 10:51:17 +0800</pubDate><description><![CDATA[尺取法用来干什么？
尺取法一般用来算有关连续子序列有关的问题。注意，是连续！！！
什么是尺取法？
顾名思义，就是像尺子一样一段一段的取连续子序列，根据题目的不同要求做不同的判断条件（例如有时候会是循环连续子序列）
核心思想
取一个l，一个r做下标的标记，假如我要算一个长度为n的数组的连续子序列的和满足小于等于总和的一半的最短长度，一开始让l和r都等于0，让r不断右移直到大于总和的一半，判断一次当前长度-1与之前长度哪个更小，然后l也开始右移，直到 l到r的和小于等于总和的一半，判断当前长度与之前长度哪个更小]]></description><category></category></item><item><title><![CDATA[快速幂与快速乘(c语言实现)]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/116212095</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/116212095</guid><author>qq_52688175</author><pubDate>Tue, 27 Apr 2021 22:59:13 +0800</pubDate><description><![CDATA[快速幂思想
快速幂是什么？
简单来说，快速幂就是快速算出a的b次方模c的一种算法。
那么，它的本质是什么？
本质上是一个数学公式
a^b % c = （a % c） * （a % c） * … *（a % c） % c（总共b个小括号） 
若b为偶数 = （a^2 % c) * (a^2 % c) * … * (a^2 % c) % c （总共b/2个小括号）
若b为奇数 = （a^2 % c) * (a^2 % c) * … * (a^2 % c)  * a % c % c（总共（b-1）/ 2个小括号）]]></description><category></category></item><item><title><![CDATA[欧拉筛(线性筛)优化素数]]></title><link>https://blog.youkuaiyun.com/qq_52688175/article/details/116132408</link><guid>https://blog.youkuaiyun.com/qq_52688175/article/details/116132408</guid><author>qq_52688175</author><pubDate>Sun, 25 Apr 2021 17:14:59 +0800</pubDate><description><![CDATA[普通筛法(埃氏筛)
我们一般要得到1~n以内的素数，用的都是埃拉托斯特尼筛法(后文都用埃氏筛 代替)。
那么，什么是埃氏筛?埃氏筛的本质从2开始删去素数本身倍数，向后找到的第一个数字一定是素数。
证明如下：
设已找到第n个素数，删去此数自身倍数后找到剩下的第一个数字L，知L之前有且仅有n个素数，且都无法整除L，即L无法被小于自身的所有素数整除，推出L是素数（L就是第n+1个素数）。照此由第一个素数2往后递推即可。
即从2开始，我们把素数的所有倍数(小于n)都剔除掉，再用下一个素数，也就是3筛，把3留下，把3]]></description><category></category></item></channel></rss>