<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Mamba0Z的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Mamba0Z</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Mamba0Z]]></copyright><item><title><![CDATA[csp-j 2021 T1分糖果]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/127004636</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/127004636</guid><author>Mamba0Z</author><pubDate>Fri, 23 Sep 2022 09:41:16 +0800</pubDate><description><![CDATA[2021 T1 分糖果]]></description><category></category></item><item><title><![CDATA[C++手写list]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/126502469</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/126502469</guid><author>Mamba0Z</author><pubDate>Wed, 24 Aug 2022 13:15:09 +0800</pubDate><description><![CDATA[C++手写list]]></description><category></category></item><item><title><![CDATA[C++手写vector]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/126480835</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/126480835</guid><author>Mamba0Z</author><pubDate>Tue, 23 Aug 2022 11:15:21 +0800</pubDate><description><![CDATA[【代码】C++手写vector。]]></description><category></category></item><item><title><![CDATA[归并排序，快排]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/126355527</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/126355527</guid><author>Mamba0Z</author><pubDate>Mon, 15 Aug 2022 21:50:07 +0800</pubDate><description><![CDATA[之前都只是听过这些排序的名字，但因为感觉用不上就没学，今天看了一下，感觉看讲解还没直接看代码理解快，大概是看几分钟就能自己实现的程度。]]></description><category></category></item><item><title><![CDATA[牛客小白月赛39 G-冷静 线性筛最小质因子+树状数组]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120988440</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120988440</guid><author>Mamba0Z</author><pubDate>Wed, 27 Oct 2021 10:52:57 +0800</pubDate><description><![CDATA[原题链接
题意：
中文题面，q次查询，每次查询给出n，q，求1-n中可以写成都是大于等于k的质数的乘积的形式的数的个数，即将一个数写成质因子相乘的局面时最小质因子大于等于k，如10 = 25，20 = 225，30 = 23*5。
思路：
线性筛预处理所有数的最小质因子，只要将标记操作时赋值1改为赋值pri[i]就可以了，然后给所有查询按照n升序排序，离线处理插入树状数组查询。
#include&lt;bits/stdc++.h&gt;
#define LL long long
#define INF IN]]></description><category></category></item><item><title><![CDATA[2021CCPC网络赛重赛 _ 1011 _ HDU7136 _ Jumping Monkey 并查集，重建树]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120771739</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120771739</guid><author>Mamba0Z</author><pubDate>Thu, 14 Oct 2021 20:14:51 +0800</pubDate><description><![CDATA[原题链接
转载博客
写的很好了，这里只做记录:D
贴个代码
#include&lt;bits/stdc++.h&gt;
#define LL long long
#define INF INT64_MAX
#define MOD 998244353
#define ls rt &lt;&lt; 1
#define rs rt &lt;&lt; 1 | 1
using namespace std;
typedef pair&lt;int,int&gt;pa;
const int N = 1e5+7;
int ]]></description><category></category></item><item><title><![CDATA[Codeforces Round #674 (Div. 3) F.Number of Subsequences 简单线性dp]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120749070</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120749070</guid><author>Mamba0Z</author><pubDate>Wed, 13 Oct 2021 17:50:57 +0800</pubDate><description><![CDATA[原题链接
题意：
给一个长度为n的由a，b，c，?组成的字符串，？代表任意填abc，问所有情况产生的字符串中有多少个abc子序列。
思路：
经典递推dp，特殊的地方在于？的处理上，当？取a的时候应该加的值不是1，设当前下标前出现过的？次数为x，当前位置出现a的时候加的值是3^x，再把？取bc的情况传递一下就ok了
#include&lt;bits/stdc++.h&gt;
#define LL long long
#define INF INT64_MAX
#define MOD 1000000007
#d]]></description><category></category></item><item><title><![CDATA[2021CCPC网络赛重赛 _ 1005 _ HDU7130 _ Monopoly 正负数同余性质，细节题]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120705918</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120705918</guid><author>Mamba0Z</author><pubDate>Mon, 11 Oct 2021 16:29:44 +0800</pubDate><description><![CDATA[原题链接
题意：
有1-n个节点，从0出发，每次只能往右走一个节点，n的下一步会回到1节点，每走到一个节点获得ai（-1e9-1e9）点分数，m次查询，每次查询最少走多少步分数可以到达x。
思路：
令从1-n走完一轮的总分数为sum
根据每个点的前缀和对sum取余得到的值分组，然后每次查询二分查找x对sum取余同余的那组最优的节点，没有则说明没有合法点
思路不难想，赛中一开始想歪了，后面纠正回来的时候没多少时间了，在写法上一直在犹豫，最后成功把自己送走。
#include&lt;bits/stdc++.h&]]></description><category></category></item><item><title><![CDATA[2018 ICPC 青岛站 F-Tournament zoj-4063]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120638109</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120638109</guid><author>Mamba0Z</author><pubDate>Thu, 07 Oct 2021 17:05:56 +0800</pubDate><description><![CDATA[原题链接
题意：
n个骑士要进行m轮对决，每一轮每个骑士都要有一个对手。而且每个对手只能打一次。假设a与b打了，c与d打了，那么后面的任意一轮如果a与c打了，那么b就必须和d打，问是否存在方案，存在就输出字典序最小的一组，否则输出Impossible
思路：
构造，将骑士分成2幂次组，然后在组内循环，看到其他题解都只是说了用lowbit(n)来判断是否合法，但并没有说原因的，我在这里补充一下吧，lowbit取的是2进制最低位，减一得到的就是二进制最右端的连续0转化成1，正好对应了2幂次分组的幂次和。
最容易]]></description><category></category></item><item><title><![CDATA[Codeforces Round #724 (Div. 2) D - Omkar and Medians 树状数组+离散化]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120586160</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120586160</guid><author>Mamba0Z</author><pubDate>Sat, 02 Oct 2021 15:32:12 +0800</pubDate><description><![CDATA[原题链接
题意：
已知一个数组a和数组b，bi是a数组中前i个元素的中位数，现在给定b数组，判断是否可以求出a数组
思路：
假设第b[i]前都满足，那么说明此时b[i]就是a数组中的中位数，现在插入b[i+1]会出现两种情况。
1.如果b[i+1]和b[i]之间没有出现过数，那么只要插入一个b[i+1]再根据大小关系插入一个+inf或者-inf就行了2.如果b[i+1]和b[i]之间出现过数，那么仅插入两个数最多只能使中位数移动一位，并不能移到b[i+1]身上，所以这种情况是不行的。
所以直接树状数组查询中]]></description><category></category></item><item><title><![CDATA[Codeforces Round #541 (Div. 2) 1131D. Gourmet choice 头铁大模拟（std拓扑排序+并查集]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120216595</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120216595</guid><author>Mamba0Z</author><pubDate>Fri, 10 Sep 2021 10:53:09 +0800</pubDate><description><![CDATA[原题链接
题意：
有个厨师吃了2天，每天吃m道菜，然后给每道菜打分，给出一个n*m的字符矩阵，s[i][j]表示第一天的第i道菜和第二天的第j道菜的评分的大小关系，求这两天吃的菜的评分。
思路：
按&gt;和=数量排序，先给最大的赋值1e4，每次取两个字符串对比，讨论一下各种组合情况，判掉不合法情况，求出第一天的评分，再根据每一列的符号求出第二天的评分。这时候求出来的只是相对大小，还要把所有的值在数轴上往左移，把最小的数移到1就可以了，细节比较多，很锻炼码力。
改到wa9的时候搜了一下题解，看到tag是拓扑]]></description><category></category></item><item><title><![CDATA[Codeforces Global Round 15 1552D. Array Differentiation 思维好题 场景转换（建边/dp）]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120180126</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120180126</guid><author>Mamba0Z</author><pubDate>Wed, 08 Sep 2021 15:19:12 +0800</pubDate><description><![CDATA[原题链接
题意：
给出n个数a1…an，问能否找到n个数b1…bn使得任意一个ai可以由b数组中两个数相减得到。
思路：
很容易发现x+1个bi是可以随意构造出x个ai的，一个b0=0，其他bi=bi-1 + a[i] 就可以了，所以只要这x+1个bi中还可以构造出一个其他ai就是可行的。
现在的问题就变成了是否存在一段ai的和等于另一段没有重复元素的ai的和，如图所示，有一个像这样环就是可以的。

这是dfs写的，还有一种写法是用三进制枚举，=每一个ai是加还是减或者跳过，然后看有没有sum==0的情况，]]></description><category></category></item><item><title><![CDATA[“红旗杯”第十五届东北地区大学生程序设计竞赛 D - Lowbit]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120103773</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120103773</guid><author>Mamba0Z</author><pubDate>Sat, 04 Sep 2021 18:40:00 +0800</pubDate><description><![CDATA[原题链接
题意：
n个数，m次操作。
操作1：给l，r之间的数加上一个自身的lowbit（二进制下的最低位）。
操作2：查询l，r区间和。
思路：
可以发现进行操作1只有两种情况。
1.如果这个数是2的倍数，那么进行操作1只需要*2就可以了。
2.如果这个数不是2的倍数，那么就是最低位往左移一位。
根据题目中a[i]的范围可以知道一个数最多只能进行15次第二种情况的操作，就是10101010101010101这样的形式的时候。
所以可以对不是2的倍数的值进行暴力单点修改，当一个区间内的值都是2的倍数的时候再]]></description><category></category></item><item><title><![CDATA[Codeforces Round #643 (Div. 2) 1355E. Restorer Distance 三分]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120083648</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120083648</guid><author>Mamba0Z</author><pubDate>Fri, 03 Sep 2021 15:56:55 +0800</pubDate><description><![CDATA[原题链接
题意：
n堆由相同砖块堆成的堆，有三种操作：
1.在第i堆放一块转，花费a。
2.在第i堆拿走一块转，花费r。
3.把第i堆的砖拿到第j堆，花费m。
求使得所有堆高度相同的最小化费。
思路：
先增后减的函数曲线，三分高度算花费。
#include&lt;bits/stdc++.h&gt;
#define LL long long
#define INF INT64_MAX
#define MOD 998244353
#define ls rt &lt;&lt; 1
#define rs rt &l]]></description><category></category></item><item><title><![CDATA[Codeforces Round #697 (Div. 3) G. Strange Beauty 线性筛变形思维]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120049650</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120049650</guid><author>Mamba0Z</author><pubDate>Wed, 01 Sep 2021 21:57:25 +0800</pubDate><description><![CDATA[原题链接
题意：
n个数，问删除多少个数之后剩下的数组中的数满足：对于任意一对i，j满足ai%aj==0  ||  aj%ai ==0。
思路：
题目给的ai只有2e5，很容易想到从ai入手，算出如果当前这个ai是留下来的数中最大的数时，有多少数不用被删除。
先计算每个数出现的次数，然后给原数组排序去重，遍历出现过的数的倍数，然后取最大值就可以了，注意每一组都是独立的，所以是分别计算取最大值，不是累加。
#include&lt;stdio.h&gt;
#include&lt;algorithm&gt;
#i]]></description><category></category></item><item><title><![CDATA[牛客小白月赛37 I-加减 二分/双指针+前缀和]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120013190</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120013190</guid><author>Mamba0Z</author><pubDate>Tue, 31 Aug 2021 11:12:22 +0800</pubDate><description><![CDATA[原题链接
题意：
小红拿到了一个长度为n的数组。她每次操作可以让某个数加 1 或者某个数减 1 。
小红最多能进行k次操作。她希望操作结束后，该数组出现次数最多的元素次数尽可能多。
你能求出这个最大的次数吗？
思路：
固定ai让左右的数往ai靠，然后二分区间长度或者双指针遍历区间，前缀和O1算区间贡献，不错的思维题。
二分
#include&lt;bits/stdc++.h&gt;
#define LL long long
#define INF INT64_MAX
#define MOD 99824435]]></description><category></category></item><item><title><![CDATA[Deltix Round, Summer 2021 (rated, Div. 1 + Div. 2) C - Compressed Bracket Sequence 反人类绕远路乱搞思维]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/120002879</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/120002879</guid><author>Mamba0Z</author><pubDate>Mon, 30 Aug 2021 18:55:24 +0800</pubDate><description><![CDATA[原题链接
题意：
给一个长度为n的数组，下标为奇数的ai表示这个位置的连续的左括号个数，下标为偶数的ai表示这个位置的连续的右括号个数，求合法的连续子串个数。
思路：
如果是比较短的括号序列，经典栈+dp就可以解决，但这道题显然不能一个括号一个括号遍历，（为了方便用LR代替左右括号）因为LR是交替出现的，我的想法是根据每一对LR的大小关系来统计，那么就有了三种情况。
1.L==R，那么ans += L，L,R个数都清空，并且这一块的LR可以作为合法情况和左边的合法情况进行组合，如果i-1的R也为0，那么就至]]></description><category></category></item><item><title><![CDATA[hdu6992 Lawn of the Dead 查询区间会变的线段树小变形]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/119956565</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/119956565</guid><author>Mamba0Z</author><pubDate>Fri, 27 Aug 2021 16:56:13 +0800</pubDate><description><![CDATA[原题链接
题意：
n*m的棋盘，k个地雷，从（1，1）开始走，只能走右下两个方向，显然地雷不能走，问能到达的格子数
思路：
两棵线段树维护一下上一次层能到的区间，然后根据这一层的地雷位置推出理论上能到的区间，再更新这一层实际能到的区间。
#include&lt;bits/stdc++.h&gt;
#define LL long long
#define INF INT64_MAX
#define MOD 1000000007
#define stree SegTree[f][root]
#define ls]]></description><category></category></item><item><title><![CDATA[hud6986 Kanade Loves Maze Designing 简单dfs]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/119956528</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/119956528</guid><author>Mamba0Z</author><pubDate>Fri, 27 Aug 2021 16:48:38 +0800</pubDate><description><![CDATA[原题链接
#include&lt;bits/stdc++.h&gt;
#define LL long long
#define INF INT64_MAX
#define MOD 998244353
#define ls rt &lt;&lt; 1
#define rs rt &lt;&lt; 1 | 1
using namespace std;
typedef pair&lt;int,int&gt;pa;
const int N = 100005;
const int b = 19560929;
vect]]></description><category></category></item><item><title><![CDATA[hdu6976 Game on Plane 数组的巧妙应用]]></title><link>https://blog.youkuaiyun.com/Mamba0Z/article/details/119956171</link><guid>https://blog.youkuaiyun.com/Mamba0Z/article/details/119956171</guid><author>Mamba0Z</author><pubDate>Fri, 27 Aug 2021 16:35:29 +0800</pubDate><description><![CDATA[原题链接
#include&lt;bits/stdc++.h&gt;
#define LL long long
#define INF INT64_MAX
#define MOD 998244353
#define ls rt &lt;&lt; 1
#define rs rt &lt;&lt; 1 | 1
using namespace std;
typedef pair&lt;int,int&gt;pa;
const int N = 100005;
pa a[N];
int cnt[N];
int mai]]></description><category></category></item></channel></rss>