<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_43008477的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_43008477</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_43008477]]></copyright><item><title><![CDATA[二分图博弈（tip）]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/139047777</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/139047777</guid><author>qq_43008477</author><pubDate>Sun, 19 May 2024 20:20:46 +0800</pubDate><description><![CDATA[2.若改点在所有最大匹配中均出现过，则所有最大流中源点s到改点均有流量。的路径，那么求最大流的最后一次bfs中（无增广路，必定到不了。1.把这个点及其相邻的边删除，若最大匹配数不变，则改点满足。能到的点都会被标记起来，然后判断即可。到改点的边有流量，且残量网络不存在。相当于在某个最大流方案中，]]></description><category></category></item><item><title><![CDATA[莫队奇偶排序优化]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/130772709</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/130772709</guid><author>qq_43008477</author><pubDate>Fri, 19 May 2023 19:17:05 +0800</pubDate><description><![CDATA[【代码】莫队奇偶排序优化。]]></description><category></category></item><item><title><![CDATA[异或边的最小生成树]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/130772501</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/130772501</guid><author>qq_43008477</author><pubDate>Fri, 19 May 2023 18:59:09 +0800</pubDate><description><![CDATA[用最高不同位将数字进行分开，之后内部的数字再用同样的方法进行异或连边，比如100和01 10 11 从第3位就不同，那么100就要在1 10 11 中找一个进行异或，1和10 11 在第二位不同，之后 10和11先做，后和1做，最后和100做，复杂度是logn的，每次进行查找还需要30，理论上也是不会炸的。给你1e5个点，每个点有一个权值，两个点之间如果连边，那么边权就是这两个点权异或起来的值，要你求出所有点组成的最小生成树。说实话我真的不可能想的到，哪怕知道了分治的做法，也是花了一段时间去理解的。]]></description><category></category></item><item><title><![CDATA[图论小tip]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/130347002</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/130347002</guid><author>qq_43008477</author><pubDate>Mon, 24 Apr 2023 17:01:49 +0800</pubDate><description><![CDATA[假设这两个点为 x, y。且必须经过点 u 到点 v 这条边，那我们就可以把 x 到 y 的最短路分成三段。题意：给定一个无向带权图，你能使一条边的边权权变为 0，求 n 组点对最短路之和最小值。修改的时候直接对其中一段进行操作就行了。（注意无向图要注意修改的先后顺序）]]></description><category></category></item><item><title><![CDATA[图片旋转笔记]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/129305287</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/129305287</guid><author>qq_43008477</author><pubDate>Thu, 02 Mar 2023 17:25:49 +0800</pubDate><description><![CDATA[记录一下将图片旋转45度的方法。]]></description><category></category></item><item><title><![CDATA[SA后缀数组]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/129212226</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/129212226</guid><author>qq_43008477</author><pubDate>Sat, 25 Feb 2023 10:23:18 +0800</pubDate><description><![CDATA[（求sa的算法有倍增法和DC3，因为后者有码量大、常数大等缺点，这里就只记录倍增算法）我们如果对于每个倍增完的二元组，每个都sort一下，复杂度是O(nlog2)的。那么将基数排序应用到其中去，就可以做到O(nlogn)i ]]></description><category></category></item><item><title><![CDATA[K Tokitsukaze and Synthesis and Traits]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/128738809</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/128738809</guid><author>qq_43008477</author><pubDate>Thu, 19 Jan 2023 23:06:16 +0800</pubDate><description><![CDATA[我们的目的就是在给定的点中找出原图中构成的边数。通过度数低的点向度数高的点建立有向边。用题目给定的条件构造一张图。可以保证每个点的出边。实用的图论小技巧++]]></description><category></category></item><item><title><![CDATA[分层图笔记]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/110244179</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/110244179</guid><author>qq_43008477</author><pubDate>Fri, 27 Nov 2020 19:31:49 +0800</pubDate><description><![CDATA[记录一下我第一次系统性地学习分层图（最短路）
这种技巧一般用于有某种限制的最短路中
这种限制可以是 高速公路，路上任意时刻满足某种条件（较为简单的）
egegeg : lg2939, lg4568, lg5340, lg4822
也可以是 横向走纵向走之类的（比较有技巧性的）
egegeg : lg3831

...]]></description><category></category></item><item><title><![CDATA[单调队列【笔记】]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/109482800</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/109482800</guid><author>qq_43008477</author><pubDate>Wed, 04 Nov 2020 07:30:45 +0800</pubDate><description><![CDATA[这里主要写一些我在写单调队列优化DP时的一些心得
关于单调队列，有个问题一直困扰了我很久
headheadhead 和 tailtailtail 的初始化
是（head=1,tail=0head = 1, tail = 0head=1,tail=0）还是（head=1,tail=1head = 1, tail = 1head=1,tail=1）
让我们来看看这两种情况
无非就是当 tail=1tail = 1tail=1 时，队列里已经有了一个空值
而当 tail=0tail = 0tail=0 时队列里什]]></description><category></category></item><item><title><![CDATA[CF 413 E]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/109351882</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/109351882</guid><author>qq_43008477</author><pubDate>Thu, 29 Oct 2020 09:52:32 +0800</pubDate><description><![CDATA[线段树好题（get新用法）
线段树内维护四个值：每段区间左上到右上，左上到右下，左下到右上，左下到右下的最短路
struct node {
	int dis_1, dis_2, dis_3, dis_4;
	//dis_1 左上到右上
	//dis_2 左上到右下
	//dis_3 左下到右上
	//dis_4 左下到右下 
}tree[N &lt;&lt; 2];

显而易见的 pushup

#include&lt;bits/stdc++.h&gt;
using namespace std;

type]]></description><category></category></item><item><title><![CDATA[CF 1435 E]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/109283831</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/109283831</guid><author>qq_43008477</author><pubDate>Mon, 26 Oct 2020 10:30:55 +0800</pubDate><description><![CDATA[如果 a&gt;b∗ca&gt;b*ca&gt;b∗c 怪物的血就可以无限大，也就是输出−1-1−1
反之 a&lt;=b∗ca&lt;=b*ca&lt;=b∗c
我们把伤害和回血量抽象一下（伤害为白色，回血为黑色）

解释一下：
1：最后一次伤害打完不回血最优
2：第一次伤害一定大于或等于第一段回血量
（不然图就会像下面这样，这样显然去掉第一次更优）
（假设黑白交替有xxx段，x=a/b/d+1x=a/b/d +1x=a/b/d+1，想想为什么）
我们不难发现黑色段，也就是回血量是一段首项为(x−1)∗b]]></description><category></category></item><item><title><![CDATA[ybt 1488 新的开始]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/109282540</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/109282540</guid><author>qq_43008477</author><pubDate>Mon, 26 Oct 2020 08:11:49 +0800</pubDate><description><![CDATA[不难看出这是一道最小生成树
but，我（蒟蒻）一开始以为是取最小的 v[i]v[i]v[i]然后构建最小生成树
这样会有一个问题，建造电网有时候不一定会比建造电站更优
so~，我们可以把所有建电站的边连到一个虚点上，这样直接进行最小生成树就不会有问题了
#include&lt;bits/stdc++.h&gt;
using namespace std;

typedef long long ll;
const int inf = 1e9 + 7;
const int N = 310000;

int n, ]]></description><category></category></item><item><title><![CDATA[RMQ （ST表）笔记]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/98482905</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/98482905</guid><author>qq_43008477</author><pubDate>Mon, 05 Aug 2019 13:46:51 +0800</pubDate><description><![CDATA[#include&lt;bits/stdc++.h&gt;
using namespace std;

typedef long long ll;
const int MAX = 100100;

int n, m;
int a[MAX], log1[50]; 
int f[MAX][30];//f[i][j]表示第i个数向后2^j区间内的最大值 

inline int read(){
	int...]]></description><category></category></item><item><title><![CDATA[LCA 倍增]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/98482321</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/98482321</guid><author>qq_43008477</author><pubDate>Mon, 05 Aug 2019 12:45:47 +0800</pubDate><description><![CDATA[预处理出f[i][j] 表示j 点往上走2i 步到达的点。
f[0][j]=father[j]
f[i][j]=f[i-1][f[i-1][j]]
预处理时间复杂度O(n log n)
假设我们要求x 和y 的LCA。
将x 和y 中深度较大的那个往上跳到和另一个深度相同。
再同时向上倍增枚举一个2 的幂的步长2i，若x 往上走2i
步与y 往上走2i 步不为同一个点，则将它们同时往上走2i
步。...]]></description><category></category></item><item><title><![CDATA[线段树 笔记]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/98480837</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/98480837</guid><author>qq_43008477</author><pubDate>Mon, 05 Aug 2019 11:08:11 +0800</pubDate><description><![CDATA[#include&lt;bits/stdc++.h&gt;
using namespace std;

typedef long long ll;
const int MAX = 100010;

int n, m;
ll a[MAX];
ll t[MAX * 100],tag[MAX * 100];

inline int read(){
	int s = 0, w = 1;
	char ch ...]]></description><category></category></item><item><title><![CDATA[靶形数独]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/96490723</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/96490723</guid><author>qq_43008477</author><pubDate>Fri, 19 Jul 2019 18:45:36 +0800</pubDate><description><![CDATA[一道很典型的搜索题
就是有个很神奇的方法可以减少搜索时间
//   就是从含有0最少的一行开始搜（膜拜某谷大佬） //
其实自己做数独的时候
应该也会有小伙伴这么做（方便）
上代码
#include&lt;bits/stdc++.h&gt;
using namespace std;
const int MAX=10;
struct node{
	int x;
	int cnt;
}k[MAX];
...]]></description><category></category></item><item><title><![CDATA[1312Mayan游戏]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/96478548</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/96478548</guid><author>qq_43008477</author><pubDate>Fri, 19 Jul 2019 13:09:39 +0800</pubDate><description><![CDATA[范围很小
so~~
直接暴搜+模拟
上代码
#include&lt;bits/stdc++.h&gt;
using namespace std;
const int MAX=10;
int len[MAX];//存高度
int n;
int a[MAX][MAX];
int u[MAX][MAX];
int vis[MAX][MAX];
int b[MAX][MAX][MAX];
struct n...]]></description><category></category></item><item><title><![CDATA[洛谷 1437 扩散]]></title><link>https://blog.youkuaiyun.com/qq_43008477/article/details/96282093</link><guid>https://blog.youkuaiyun.com/qq_43008477/article/details/96282093</guid><author>qq_43008477</author><pubDate>Wed, 17 Jul 2019 10:47:36 +0800</pubDate><description><![CDATA[这道题是一道典型的二分
//就是判断有点麻烦——蒟蒻
题目说：两个点a、b连通，记作e(a,b),当且仅当a、b的扩散区域有公共部分。
连通块的定义是块内的任意两个点u、v都必定存在路径e(u,a0),e(a0,a1),…,e(ak,v)。
也就是说一个点扩散到另一个点的 时间 就是他们的横纵坐标差值的和（xi-xj）+ ( yi-yi )
如果 时间&lt;mid2 就说明两个块连通（注意mid...]]></description><category></category></item></channel></rss>