<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[谦的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SKTMK</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SKTMK]]></copyright><item><title><![CDATA[Codeforce Deltix Round, Summer 2021 #D]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/120063856</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/120063856</guid><author>SKTMK</author><pubDate>Thu, 02 Sep 2021 16:26:58 +0800</pubDate><description><![CDATA[Codeforce Deltix Round, Summer 2021 #D
做到的第一个交互题，纪念一下
题目链接
题目大意：已知一个序列有n个数，你需要通过不多于2n次询问来求得这个序列中的第k大的元素
每次询问有两种方式：

or a b 测评机返回在序列中第a位和第b位数的按位或
and a b 测评机返回在序列中第a位和第b位数的按位与

题解：
想要解题我们需要知道一个公式：a+b=a&amp;b+a|b
于是我们可以将第一位的数与其他位数的数进行相加（2n-2次询问）
这时我们再将第二位与第三]]></description><category></category></item><item><title><![CDATA[CodeForce #736 C]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/119597386</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/119597386</guid><author>SKTMK</author><pubDate>Wed, 11 Aug 2021 21:26:20 +0800</pubDate><description><![CDATA[昨天补题，写了一个看起来是图论却不那么图论的图论题
题目链接：贵族
题目大意：
这里有N个贵族编号从1到N，编号为i的贵族据有i点权利，最初有M个“关系”，每一个a，b之间的关系都是相互的。
当某个贵族满足：至少有一个朋友并且他所有的朋友权力都大于他时，这个贵族便被定义为是弱势的。
我们有以下三种操作：


在u、v之间添加一个“关系”


将u、v之间的“关系”去掉


为以下的程序计算答案


程序描述：杀死所有的弱势贵族，并且删除所有与他相关的“关系”。
于是，会有新的贵族成为弱势贵族。
程序会一直执]]></description><category></category></item><item><title><![CDATA[网络流-＞最大流-＞Dinic板子&&Dinic当前弧优化代码详解]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/119151375</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/119151375</guid><author>SKTMK</author><pubDate>Tue, 27 Jul 2021 19:20:39 +0800</pubDate><description><![CDATA[又是贴板子的一天
贴贴
#include&lt;bits/stdc++.h&gt;
using namespace std;
const int maxn=1e3+7;
const int inf=0x3f3f3f3f;
int cnt=0,n,m;
int s,t;
int head[maxn];
int dep[maxn];
struct edge{
    int to,cost,next;
}e[maxn*20];
void add(int u,int v,int w){
    e[cnt].to]]></description><category></category></item><item><title><![CDATA[LCA板子+应用例题]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/118976569</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/118976569</guid><author>SKTMK</author><pubDate>Wed, 21 Jul 2021 21:10:40 +0800</pubDate><description><![CDATA[来个板子
#include&lt;iostream&gt;
#include&lt;algorithm&gt;
#include&lt;vector&gt;
#include&lt;queue&gt;
#include&lt;stack&gt;
#include&lt;map&gt;
#include&lt;stdio.h&gt;
#include&lt;math.h&gt;
#include&lt;algorithm&gt;
#include&lt;string.h&gt;
#include&lt;iom]]></description><category></category></item><item><title><![CDATA[2021年暑训最短路专题题解（待补全）]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/118751099</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/118751099</guid><author>SKTMK</author><pubDate>Thu, 15 Jul 2021 10:02:58 +0800</pubDate><description><![CDATA[昨天一天才把DJ&amp;SPFA卷明白，麻了麻了
2021年暑训最短路专题
Problem A：
Til the Cows Come Home
题目大意：已知一个有T条边，N个点的无向图，求从点1到点N的最短路（板子题）
题解：数据量不大，DJ可以不需要优化，当点的数据超过1e4时最好采用堆优化DJ。
AC代码：（堆优化DJ）
#include&lt;iostream&gt;
#include&lt;string.h&gt;
#include&lt;algorithm&gt;
#include&lt;ve]]></description><category></category></item><item><title><![CDATA[2021年暑训热身专题]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/118708983</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/118708983</guid><author>SKTMK</author><pubDate>Tue, 13 Jul 2021 20:45:42 +0800</pubDate><description><![CDATA[暑训比自己在家学效率真的高了不少，但也确实累了不少
21年暑假集训热身专题
problem A：Codeforce-127B
Canvas Frames
题目大意：给你n个木棍，一对长度相同的木棍为一组，两组构成一个四边形，问最多组成多少个。
题解：用map判断是否存在“一对”（有一根就加一，凑成一对就归零），sum记录一共出现了多少对，除2即可。
AC代码：
#include&lt;bits/stdc++.h&gt;
using namespace std;
int main(){
    int n,a]]></description><category></category></item><item><title><![CDATA[蒟蒻的图论学习]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/115838934</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/115838934</guid><author>SKTMK</author><pubDate>Tue, 20 Apr 2021 16:51:52 +0800</pubDate><description><![CDATA[蒟蒻的图论学习


图的表示


邻接矩阵存图(适用于稠密图，常数复杂度内查询两点间是否有边，但空间复杂度较高)
#include&lt;bits/stdc++.h&gt;
using namespace std;
const int maxn=1e5+7;
int G[maxn][maxn];
int main(){//存无属性的无向图
    int V,E;
    cin&gt;&gt;V&gt;&gt;E;//V个顶点,E条边
    memset(G,0,sizeof(G));//初始化为两点之]]></description><category></category></item><item><title><![CDATA[黑白博弈 | 线段树（维护区间最小值&&最大值）]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/114155713</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/114155713</guid><author>SKTMK</author><pubDate>Fri, 26 Feb 2021 23:30:41 +0800</pubDate><description><![CDATA[黑白博弈

 题目
 分析
 代码

题目

题目链接：黑白博弈
分析
首先我们通过读题：单点修改、查询很容易发现这道题可以用线段树解决，既然决定了用线段树解决，那么我们需要确定以下几个要素：
1：使用线段树维护什么？
2：如何通过线段树维护的数据获得我们需要的答案？
Question1:
我们需要用利用线段树维护什么?
通过题目要求我们得知在进行查询操作时需要查询的数据是当前白块区间所有连续的白块数量，也就是说只要知道了该白块区间两端的黑块下标，我们就可以通过这两个黑块下标计算得出该区间的白块个数。
那么]]></description><category></category></item><item><title><![CDATA[5G传输 | MST（最小生成树）]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/114000834</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/114000834</guid><author>SKTMK</author><pubDate>Tue, 23 Feb 2021 20:36:11 +0800</pubDate><description><![CDATA[5G传输

 题目
分析
代码

题目

分析
通过分析题目我们容易知道：
相对于一般的MST来说，这一题不同的地方在于我们需要选取某些点作为基站，而建立基站是需要花费的。而一般的MST对于一张图来说只会存在边权，对于每个点是不会存在权值的。
所以我们对这类题的处理方法是：建立虚点
那么为什么要建立虚点呢？
我们可以知道这一题的任意点都是可以建立基站的。打个比方：假如有三个城市A B C，对应的每个城市建立基站所需花费为1  1 2，A到B花费1，B到C花费2，A到C花费3。
#mermaid-svg-yY]]></description><category></category></item><item><title><![CDATA[矩阵 | 线段树&区间gcd]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/113936291</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/113936291</guid><author>SKTMK</author><pubDate>Mon, 22 Feb 2021 14:40:40 +0800</pubDate><description><![CDATA[矩阵
**

题目
分析
代码

- 题目

- 分析
首先 我们需要理解x2∑i=x1 gcd（Ciy1,…,Ciy2)的含义：
我们将其拆分为：
gcd（Cx1y1,…,Cx1y2）+…
.+gcd（Cx2y1,…,Cx2y2）;
由于上述式子中每一个gcd里都包含一个公因子x，我们可以将这个x提取出来，那么这个式子就会转化为：(x1+…+x2)*gcd(y1,…,y2)
经过转化问题已经非常明显了:
题目中给出的a【】数组代表各个x，b【】数组代表各个y
我们需要做的就是通过前缀和求出x1到x2的和，]]></description><category></category></item><item><title><![CDATA[神奇的数字串 | 线段树&类滑动窗口]]></title><link>https://blog.youkuaiyun.com/SKTMK/article/details/113902589</link><guid>https://blog.youkuaiyun.com/SKTMK/article/details/113902589</guid><author>SKTMK</author><pubDate>Sun, 21 Feb 2021 00:47:42 +0800</pubDate><description><![CDATA[神奇的数字串
**

题目
分析
代码

*题目

*分析
首先  我们来理解一下题目中所定义的good串的含义：
假设一个数字串长度为n，只有当这个数字串的任意前i（1&lt;=i&lt;=n）项和均大于0，我们才能称这个串为good串。
简单来说就是  一个串所有前缀和的最小值大于0 才能称作good串。（不明白前缀和的小伙伴可以去这里https://blog.youkuaiyun.com/weixin_45629285/article/details/111146240看看，大佬讲的敲详细）
其次  题目中还有一]]></description><category></category></item></channel></rss>