<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[我是谁 --- 卡比兽]]></title><description><![CDATA[卡比卡比]]></description><link>https://blog.youkuaiyun.com/heucodesong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; heucodesong]]></copyright><item><title><![CDATA[Educational Codeforces Round 104 (Rated for Div. 2) A-E 题解]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114748103</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114748103</guid><author>heucodesong</author><pubDate>Sat, 13 Mar 2021 15:33:33 +0800</pubDate><description><![CDATA[A. Arena
介绍了一下博弈的规则 我们发现只有从顺序第二个不同的数的人开始 有机会获胜 因为他可以不断找比自己积分少的人单挑
#include&lt;cstdio&gt;
#include&lt;iostream&gt;
#include&lt;vector&gt;
#include&lt;map&gt;
#include&lt;set&gt;
#include&lt;stack&gt;
#include&lt;algorithm&gt;
#include&lt;cstring&gt;
#includ]]></description><category></category></item><item><title><![CDATA[Codeforces Round #702 (Div. 3) A-G]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114697085</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114697085</guid><author>heucodesong</author><pubDate>Fri, 12 Mar 2021 15:50:44 +0800</pubDate><description><![CDATA[A. Dense Array
给你 nnn 个数的数组，定义数组有效为任意两个相邻的数 max(arr[i],arr[i−1])/min(arr[i],arr[i−1])&lt;=2max(arr[i],arr[i-1])/min(arr[i],arr[i-1]) &lt;= 2max(arr[i],arr[i−1])/min(arr[i],arr[i−1])&lt;=2 那么按照题意check 补数即可，注意要从小的去不断的乘2去构造，大的 / 2 会有精度损失
#include&lt;cstdio&gt]]></description><category></category></item><item><title><![CDATA[Codeforces 1492 E Almost Fault-Tolerant Database]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114682705</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114682705</guid><author>heucodesong</author><pubDate>Thu, 11 Mar 2021 23:05:50 +0800</pubDate><description><![CDATA[E. Almost Fault-Tolerant Database
这题给你 n∗mn*mn∗m 个数，问你能否找到一行 mmm 个数，使得这 mmm 个数与每一行不同的数不超过 222 个
我们先考虑答案肯定和第一行不超过两个数（如果存在） 那么我们去拿第一行假设作为答案与其余行求 maxdiffmaxdiffmaxdiff 如果 maxdiffmaxdiffmaxdiff &gt;= 555 肯定无解，因为你只能换两个位置 5−2=3&gt;=25-2=3 &gt;= 25−2=3&gt;=2  那么当]]></description><category></category></item><item><title><![CDATA[codeforces 1496 D. Let‘s Go Hiking]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114649193</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114649193</guid><author>heucodesong</author><pubDate>Wed, 10 Mar 2021 23:02:37 +0800</pubDate><description><![CDATA[D. Let’s Go Hiking
博弈规则读题即可
这边给出解题性质 首先如果有最长路 统一默认起点在左边的话 肯定不会有大于111条的不同起点的最长路 否则后手选其他最长路即可
那么我们只要判断是否最长路满足左边与右边相等(如果不相等 后手只要从唯一的奇数里倒数第二个点出发 强行把这条路构造成偶数 后手就赢了) 并且是奇数(奇数保证先手赢)
#include&lt;cstdio&gt;
#include&lt;vector&gt;
#include&lt;cstring&gt;
#include&lt]]></description><category></category></item><item><title><![CDATA[Codeforces Round #706 (Div. 2) A-D]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114648899</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114648899</guid><author>heucodesong</author><pubDate>Wed, 10 Mar 2021 23:01:06 +0800</pubDate><description><![CDATA[A. Split it!
题意给你 nnn 长度的字符串，问是否满足找出 kkk 个字符串 满足这 kkk个字符串作为前缀 与其翻转作为后缀 中间拼第 k+1k+1k+1 个字符串组成 我们按题意枚举即可
#include&lt;cstdio&gt;
#include&lt;vector&gt;
#include&lt;cstring&gt;
#include&lt;iostream&gt;
#include&lt;map&gt;
#include&lt;set&gt;
#include&lt;vector]]></description><category></category></item><item><title><![CDATA[Codeforces Round #705 (Div. 2) A-D]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114638386</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114638386</guid><author>heucodesong</author><pubDate>Wed, 10 Mar 2021 16:32:55 +0800</pubDate><description><![CDATA[明显感觉到码力下降了 需要老年人康复训练计划
这场码力比较大 需要思维比较巧来减少码力 算是少见的cf div2了
A. Anti-knapsack
给你 nnn 和 kkk ,问是否有办法找出最大的集合使得集合中任意子集和不为k 我们发现每次分奇偶去掉 m/2m/2m/2 (分奇偶)，那么也意味着 i&lt;=m/2i &lt;= m/2i&lt;=m/2 （分奇偶）也凑不出来 毕竟按照我们的定义可以无限递归下去 这样我们凑 m=11m = 11m=11 的时候， 11=1+3+711 = 1 + 3 +]]></description><category></category></item><item><title><![CDATA[AtCoder Beginner Contest 194 D-E]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114507489</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114507489</guid><author>heucodesong</author><pubDate>Mon, 08 Mar 2021 02:24:25 +0800</pubDate><description><![CDATA[Journey
给你nnn个点的图，你一开始在第一个点，问你将图变成全联通的期望为多少
我们先思考下这个问题：给你nnn个点，你每次可以随机涂一个，问你将所有点涂上颜色的期望为多少
期望dpdpdp通常反着求解 设dp[i]dp[i]dp[i] 代表涂好iii个点后将nnn个点涂上颜色的期望，那么dp[n]dp[n]dp[n] = 000 ，dp[i]dp[i]dp[i] = (i/n)dp[i](i/n)dp[i](i/n)dp[i] + (n−i)/n∗dp[i+1](n-i)/n * dp[i+1](]]></description><category></category></item><item><title><![CDATA[Codeforces Round #703 (Div. 2) A-E 题解]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114506983</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114506983</guid><author>heucodesong</author><pubDate>Mon, 08 Mar 2021 02:09:29 +0800</pubDate><description><![CDATA[Shifting Stacks
给你 n 长度的数组，每个下标包含 000-nnn 个木块 其中可以将某一位置的木块向右边平移 请问是否能凑出高度严格上升的数组 一开始想简单了 直接判断木块的和是否大于 (111+(n−1)(n-1)(n−1))*(n−1)(n-1)(n−1)/2 但是这样是错误的 因为你不能一定凑出这样的排列 假如都在最后一列 所以需要按照符合情况所需最小木板数去做模拟 check
#include&lt;cstdio&gt;
#include&lt;cstring&gt;
#inclu]]></description><category></category></item><item><title><![CDATA[Codeforces 1494D Dogeforces 并查集+构造]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114329798</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114329798</guid><author>heucodesong</author><pubDate>Wed, 03 Mar 2021 19:08:34 +0800</pubDate><description><![CDATA[Dogeforces
题意 老板和员工，老板至少有两个员工，员工不会有下级员工，但是老板可能有自己的老板，那么公司的创始人自然就是树上的顶点 为最大的老板
nn的矩阵每个值 Ai,j 代表 i 员工与 j 员工 LCA(他们共同老板)的薪水，那么显然 Ai,i 代表第i个员工的薪水 给你薪水矩阵 构造出公司组织结构
Trick：我们发现创始人也就是最大的老板 他是可以连无数条边到自己的下属 于是我们将其单独抽出来 为第 n+1 个公司的人 也为公司创始人 这个矩阵是角平分线对称的 所以我们只需要考虑右上的情]]></description><category></category></item><item><title><![CDATA[Educational Codeforces Round 105 (Rated for Div. 2) A-D题解]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114329061</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114329061</guid><author>heucodesong</author><pubDate>Wed, 03 Mar 2021 19:07:02 +0800</pubDate><description><![CDATA[A. ABC String
题意 给你一个只包含 A、B、C的字符串，每类字符都有可能代表左右括号中的一种，问你是否能找到一个方式使得括号匹配合法
三个字符，每个字符有两种情况 总计 2^3 = 8次枚举 + 判断括号匹配合法性即可
#include&lt;cstdio&gt;
#include&lt;cstring&gt;
#include&lt;vector&gt;
#include&lt;cmath&gt;
#include&lt;iostream&gt;
#include&lt;algorithm&]]></description><category></category></item><item><title><![CDATA[Codeforces Global Round 13 A-E题解]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114282886</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114282886</guid><author>heucodesong</author><pubDate>Tue, 02 Mar 2021 13:42:52 +0800</pubDate><description><![CDATA[A
01序列，一个操作对某一位取反，一个操作问你当前第k大是多少
维护一个当前最后一个1所在排名
#include &lt;cstdio&gt;
using namespace std;
const int MAX_N = 100025;
int arr[MAX_N];
int main()
{
    int n,m,sum = 0;
    scanf("%d%d",&amp;n,&amp;m);
    for(int i = 1;i&lt;=n;++i)
    {
        scanf("%]]></description><category></category></item><item><title><![CDATA[Codeforces Round #704 (Div. 2) A-E题解]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/114275533</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/114275533</guid><author>heucodesong</author><pubDate>Tue, 02 Mar 2021 01:58:25 +0800</pubDate><description><![CDATA[A Three swimmers
题意 三个人每人游一个来回时间分别是a、b、c，那么在 a、b、c的倍数时间点上 三个人均会在左边的点，题目问你p时刻来 还要等多久最快遇到三个人 1e18 除法判断是否整除相减即可
#include&lt;cstdio&gt;
#include&lt;vector&gt;
#include&lt;cstring&gt;
#include&lt;cmath&gt;
#include&lt;iostream&gt;
#include&lt;queue&gt;
using na]]></description><category></category></item><item><title><![CDATA[伙计们我回来了]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/113703481</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/113703481</guid><author>heucodesong</author><pubDate>Fri, 05 Feb 2021 20:33:20 +0800</pubDate><description><![CDATA[伙计们我回来了
回来了 回来了 回来了 好！

]]></description><category></category></item><item><title><![CDATA[新生活开始啦!大家也要加油]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/104062547</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/104062547</guid><author>heucodesong</author><pubDate>Tue, 21 Jan 2020 15:30:24 +0800</pubDate><description><![CDATA[2020 年到了
自己也开始新生活了
再见 ACM .
你好 新生活
@zly @syh @biubiubiu @nitrogens @lls 新的篇章啦

]]></description><category></category></item><item><title><![CDATA[CERC2017 I: Intrinsic Interval 线段树]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/102854891</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/102854891</guid><author>heucodesong</author><pubDate>Fri, 01 Nov 2019 11:57:39 +0800</pubDate><description><![CDATA[CERC2017I
题目是求最小的好区间
好区间就是一段区间都是连续的数 对于好区间显然有个数据结构叫析和树是可以求解的
但是我们用线段树怎么处理呢
首先我们知道 好区间 l 到 r是满足区间maxx-区间minn = r - l
然后我们又知道 两个好区间的交 一定也是好区间
反证法:假如这个交不是好区间 差几个数 那么这几个数如果在左边 那么和右边的数就不能构成好区间
所以两个好区间的交也一定...]]></description><category></category></item><item><title><![CDATA[2019 CCPC 秦皇岛游记]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/101928029</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/101928029</guid><author>heucodesong</author><pubDate>Wed, 02 Oct 2019 17:42:16 +0800</pubDate><description><![CDATA[补坑ing

]]></description><category></category></item><item><title><![CDATA[LCT 的基础 Splay简单食用指南]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/100995973</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/100995973</guid><author>heucodesong</author><pubDate>Wed, 18 Sep 2019 19:59:31 +0800</pubDate><description><![CDATA[我是不会用Splay写平衡树的(真香
为了学LCT 记一份Splay板子
//普通平衡树
/*
    if you can't see the repay
    Why not just work step by step
    rubbish is relaxed
    to ljq
*/
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
...]]></description><category></category></item><item><title><![CDATA[【P4146 序列终结者】fhq_treap]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/100932140</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/100932140</guid><author>heucodesong</author><pubDate>Tue, 17 Sep 2019 17:06:58 +0800</pubDate><description><![CDATA[P4146
这题和文艺平衡树差不了多少 但是换了一个处理区间的方式 常数竟然小了一点 下次卡常就用这种方式了 之所以会小 是因为和之前相切的方式来讲 这里这样切的长度小一点
自然期望时间复杂度也小了一点
维护两个lazy标记 区间不断down下去即可
注意区间加我们在外面就得维护
但是swap是针对子树的 所以必须要传进去才能进行swap
/*
    if you can't see the r...]]></description><category></category></item><item><title><![CDATA[【P2234 [HNOI2002]营业额统计】fhq_treap]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/100928272</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/100928272</guid><author>heucodesong</author><pubDate>Tue, 17 Sep 2019 15:37:31 +0800</pubDate><description><![CDATA[P2234](https://www.luogu.org/problem/P2234)
其实就是问每一天的前驱和后继 取个min即可 所以我们上平衡树
/*
    if you can't see the repay
    Why not just work step by step
    rubbish is relaxed
    to ljq
*/
#include &lt;cstdi...]]></description><category></category></item><item><title><![CDATA[fhq_treap简单食用 一种不用旋转的平衡树]]></title><link>https://blog.youkuaiyun.com/heucodesong/article/details/100920722</link><guid>https://blog.youkuaiyun.com/heucodesong/article/details/100920722</guid><author>heucodesong</author><pubDate>Tue, 17 Sep 2019 11:34:32 +0800</pubDate><description><![CDATA[我们都知道 treap是tree+heap也就是树堆
那treap和splay他们都是比较好的平衡树 至于红黑树就不提了 代码量能雷死你
至于sbt听说性能挺优越的 但是没学
今天讲的是fhq_treap也就是非旋平衡树
我们知道为什么splay和treap需要旋转呢 因为如果你遇到一条链的查询 那么你的时间复杂度就是 O(链的长度) 但是树在某些情况下会退化成链 那么操作就会退化复杂度
所以sp...]]></description><category></category></item></channel></rss>