<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Johnny817的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Johnny817</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Johnny817]]></copyright><item><title><![CDATA[CF1630D Flipping Range]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/122975477</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/122975477</guid><author>Johnny817</author><pubDate>Thu, 17 Feb 2022 08:38:06 +0800</pubDate><description><![CDATA[如果 BBB 中有 x,yx,yx,y ，那么由于 BBB 中的数都不超过 n/2n/2n/2 ，所以对于长度为 x−yx-yx−y 的数列也是可以翻转的。
根据辗转相减，我们可以知道 gcd⁡(x,y)\gcd(x,y)gcd(x,y) 是可以任意翻转的。
因此，我们只需要考虑翻转 g=gcd⁡(b1,b2,⋯ ,bm)g=\gcd(b_1,b_2,\cdots,b_m)g=gcd(b1​,b2​,⋯,bm​) 的长度。
然后就是基操，把下标按照 ggg 的余数分组，并且对每个数设状态，有/无反转为 1/]]></description><category></category></item><item><title><![CDATA[CF1632E Distance Tree]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/122963129</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/122963129</guid><author>Johnny817</author><pubDate>Wed, 16 Feb 2022 14:47:10 +0800</pubDate><description><![CDATA[显然，应该要加入 (1,v)(1,v)(1,v) 的边。
假设对于加的边为 xxx ，最后答案为 ansansans ，那么对于小于 xxx 的答案不会超过 ansansans 。
我们可以考虑如果要让答案为 ansansans ， xxx 那条边要怎么加。
我们只关心 dep&gt;ansdep&gt;ansdep&gt;ans 的点。
因此我们希望走过 xxx 这条边后，走到这些点的路程最短。
类似树的直径，我们需要知道这些点中距离最远的点对的距离是多少，我们把它记为 fansf_{ans}fans​ ]]></description><category></category></item><item><title><![CDATA[CF1634E Fair Share]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/122956730</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/122956730</guid><author>Johnny817</author><pubDate>Wed, 16 Feb 2022 09:40:36 +0800</pubDate><description><![CDATA[题目描述
题解
显然，如果一个数字出现的次数是奇数就是 NO\text{NO}NO 。
然后如果一个数列的 L\text{L}L 和 R\text{R}R 的数量要相同，可以看成是在一张图上，一入一出这个数列所代表的点。
所以我们可以把数列和数字抽象成点进行连边，可以发现每个点的度数都是偶数，所以肯定可以找出欧拉回路。
效率： O(nlog⁡n)O(n\log n)O(nlogn) 。

...]]></description><category></category></item><item><title><![CDATA[attention]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121569355</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121569355</guid><author>Johnny817</author><pubDate>Fri, 26 Nov 2021 22:31:38 +0800</pubDate><description><![CDATA[大一的acm之旅就要结束啦quuuq
来写点需要注意的点叭。
最重要的：想清楚写法再开始写！！！
1.变量的范围！特别是推式子的时候
eg: ∑i=1kn/i\sum_{i=1}^kn/i∑i=1k​n/i 去数论分块的时候， lll 和 rrr 既要小于等于 nnn ，也要小于等于 kkk 。
eg: 数组内的变量要特别注意有没有小于最小值(0)或者是大于最大值，小心小心再小心。
2.注意内存限制！交之前如果有不确定的内存的话要用sizeof输出看看。
3.注意编号！特别是大小写，数字都在的情况下要搞清楚]]></description><category></category></item><item><title><![CDATA[2019 ICPC Asia-East Continent Final]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121539758</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121539758</guid><author>Johnny817</author><pubDate>Thu, 25 Nov 2021 22:05:34 +0800</pubDate><description><![CDATA[后期拉垮场（好像每次都是这样
A - City
枚举中点就好。效率： O(nm)O(nm)O(nm) 。
B - Black and White
先考虑n+m是2的倍数。
故从左上到右下的对角线的条数有n+m-1个。我们每两个分一组，把最后一个再加上长度为0的黑色，这样就有n+m/2组。

...]]></description><category></category></item><item><title><![CDATA[2018-2019 ACM-ICPC, Asia East Continent Finals]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121398890</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121398890</guid><author>Johnny817</author><pubDate>Thu, 18 Nov 2021 14:37:31 +0800</pubDate><description><![CDATA[有些题目还不会写，留个坑吧。（我太菜了哭哭
A - Exotic … Ancient City
场未A，留坑。
B - Mysterious … Host
场未A，留坑。
C - Heretical … Möbius
场A(-3)。
事实上写的暴力。
通过打表发现可以先判掉 111 很多或者很少的情况。
考虑 μi=0\mu_i=0μi​=0 是因为 iii 有平方因子，由于给定串的总长很小所以先考虑 4,9,25,494,9,25,494,9,25,49 的倍数，我们可以枚举每 444 位都为 000 ，]]></description><category></category></item><item><title><![CDATA[2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final 2017)]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121303257</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121303257</guid><author>Johnny817</author><pubDate>Sat, 13 Nov 2021 13:38:19 +0800</pubDate><description><![CDATA[这场前期不错，后期打爆了
A - Chat Group
场1A。
用 2n−∑i=0k−1Cni2^n-\sum_{i=0}^{k-1}C_{n}^i2n−∑i=0k−1​Cni​ 即可。
B - Scapegoat
场1A。
化式子得到要求的就是 ∑i=1nxi2ki\sum_{i=1}^n\frac{x_i^2}{k_i}∑i=1n​ki​xi2​​ 的最小值，其中 ∑i=1nki=m\sum_{i=1}^nk_i=m∑i=1n​ki​=m 。
那么维护一个堆，按照 xi2ki−xi2ki+1\frac]]></description><category></category></item><item><title><![CDATA[2020 China Collegiate Programming Contest, Weihai Site]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121278821</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121278821</guid><author>Johnny817</author><pubDate>Sat, 13 Nov 2021 12:04:19 +0800</pubDate><description><![CDATA[就是说，再来写一场
A - Golden Spirit
场A(-1)。
fjj写的，是个分讨题，具体细节我也不知道hhh没细想。
B - Labyrinth
场1A。
如果起点终点围城的矩形内没有黑洞，那就直接走。
否则一定存在一条最短路径使得经过黑洞四周的点，因此拿这些点分别做单源最短路即可。
效率： O(168nm)O(168nm)O(168nm) 。
一定要看到是 nm≤200000nm \le 200000nm≤200000 ，不是 n,m≤200000n,m \le 200000n,m≤20000]]></description><category></category></item><item><title><![CDATA[cf1592F2. Alice and Recoloring 2]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121278360</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121278360</guid><author>Johnny817</author><pubDate>Thu, 11 Nov 2021 23:03:33 +0800</pubDate><description><![CDATA[题目描述
题解
左下角和右上角操作没有用，只剩右下角和左上角的操作。
这步很妙：设 ai,j=(chi,j==′B′),bi,j=ai,j&nbsp;xor&nbsp;ai+1,j&nbsp;xor&nbsp;ai,j+1&nbsp;xor&nbsp;ai+1,j+1a_{i,j}=(ch_{i,j}=='B'),b_{i,j}=a_{i,j}\  \text{xor}\ a_{i+1,j}\  \text{xor}\ a_{i,j+1}\  \text{xor}\ a_{i+1,j+1}ai,j​=(ch]]></description><category></category></item><item><title><![CDATA[cf1422F. Boring Queries]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121268858</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121268858</guid><author>Johnny817</author><pubDate>Thu, 11 Nov 2021 15:33:30 +0800</pubDate><description><![CDATA[题目描述
题解
lcm\text{lcm}lcm 可以看成质因数指数 max⁡\maxmax 的乘积。
不超过 2e5\sqrt{2e5}2e5​ 的质因数最多出现一次，剩下的质因数一共 868686 个，可以用线段树或 st\text{st}st 表维护 max\text{max}max 。
大于 2e5\sqrt{2e5}2e5​ 的质因数用分块处理答案就好了，具体就是维护块之间的答案和每个数和它相同的数的前驱后继即可。
效率： O(86nlogn+nn)O(86nlogn+n\sqrt{n})O(86]]></description><category></category></item><item><title><![CDATA[cf1586F. Defender of Childhood Dreams]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121267376</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121267376</guid><author>Johnny817</author><pubDate>Thu, 11 Nov 2021 14:36:34 +0800</pubDate><description><![CDATA[题目描述
题解
拆成尽量平均的 kkk 个区间，然后不在一个区间内的点两两连颜色为层数的边，然后递归下去做即可。
正确性是对的，这样答案就是 logknlog_{k}nlogk​n 。
然后证明这就是下限的话就用归纳证明。
代码
#include &lt;bits/stdc++.h&gt;
using namespace std;
const int N=1005;
int n,k,a[N][N],m;
void solve(int l,int r,int d){
	int len=r-l+1;
	if (]]></description><category></category></item><item><title><![CDATA[cf1539E. Game with Cards]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121266503</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121266503</guid><author>Johnny817</author><pubDate>Thu, 11 Nov 2021 14:04:25 +0800</pubDate><description><![CDATA[题目描述
题解
姜老师推荐的套路题。
考虑到交换，所以我们可以在交换的时刻做个dp。
即考虑 fi,0/1f_{i,0/1}fi,0/1​ 表示能否在第 iii 个时刻为 0/10/10/1 ，在 i+1i+1i+1 为 1/01/01/0 。
考虑 fi,0f_{i,0}fi,0​ 会被 fj,1f_{j,1}fj,1​ 更新，要满足 aia_iai​ 符合 [i+1,j][i+1,j][i+1,j] 的 000 的区间且 [i+1,j][i+1,j][i+1,j] 中的每个 aka_kak​ 都在其 1]]></description><category></category></item><item><title><![CDATA[The 2019 China Collegiate Programming Contest Harbin Site]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121259730</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121259730</guid><author>Johnny817</author><pubDate>Thu, 11 Nov 2021 13:50:10 +0800</pubDate><description><![CDATA[就是说，永远不会博弈枯了枯了。
来写点一套题的题解吧（如果我会的话。
A - Artful Paintings
场A(-6)。
考虑染球个数的前缀和，会发现满足一些不等式： si−si−1≥0,si−si−1≤1,sri−sli−1≥ki,sn−(sri−sli−1)≥kis_i-s_{i-1} \ge 0,s_i-s_{i-1} \le 1,s_{r_i}-s_{l_i-1} \ge k_i,s_{n}-(s_{r_i}-s_{l_i-1}) \ge k_isi​−si−1​≥0,si​−si−1​≤1,]]></description><category></category></item><item><title><![CDATA[cf1468H. K and Medians]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121259506</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121259506</guid><author>Johnny817</author><pubDate>Wed, 10 Nov 2021 23:54:10 +0800</pubDate><description><![CDATA[题目描述
题解
构造好难，想了好久。
先判掉 n−mn-mn−m 不是 k−1k-1k−1 的倍数。
考虑到最后一次删数一定是原本序列中的 bbb ，左右两侧各有 k−12\frac{k-1}{2}2k−1​ 个点。
然后发现可以保留一些点变为 bbb ，使得回到刚刚的问题。
因此只要判断是否存在一个 bbb ，使得左右两侧都至少有 k−12\frac{k-1}{2}2k−1​ 个点即可。
启发：可以从最后一步入手。
代码
#include &lt;bits/stdc++.h&gt;
using names]]></description><category></category></item><item><title><![CDATA[cf1076G. Array Game]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121254993</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121254993</guid><author>Johnny817</author><pubDate>Wed, 10 Nov 2021 23:46:34 +0800</pubDate><description><![CDATA[题目描述
题解
考虑到每个点被跳到后都会 −1-1−1 ，所以我们一开始就把整个序列都 −1-1−1 ，然后玩法就变成要么跳到 [i+1,min⁡(k,i+m)][i+1,\min(k,i+m)][i+1,min(k,i+m)] 上的点，要么自身权值 −1-1−1 。
然后显然可以直接转化为每个点为 000 或 111 。
所以考虑 dp\text{dp}dp ： fi,0/1f_{i,0/1}fi,0/1​ 表示第 iii 个点为 0/10/10/1 ，先手是否能够必胜，考虑转移：
fi,0=or{fi+]]></description><category></category></item><item><title><![CDATA[cf1149E. Election Promises]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121254565</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121254565</guid><author>Johnny817</author><pubDate>Wed, 10 Nov 2021 19:15:33 +0800</pubDate><description><![CDATA[题目描述
题解
有向无环图的博弈游戏有个小技巧就是把点分组，每个点 uuu 所在的集合 M(u)=mex{M(v)∣(u,v)∈G}M(u)=\text{mex}\{M(v)|(u,v)\in G\}M(u)=mex{M(v)∣(u,v)∈G}
然后如果每个组的异或值为 000 的话，那么就是先手必败，否则先手必胜。
因为我们可以考虑找到异或值不为 000 的最大编号的组，然后把其中一个数 xxx 减小至这个组异或值为 000 ，然后对于 xxx 的出边所指的点 vvv ，把 vvv 点改为使得其组异或值为]]></description><category></category></item><item><title><![CDATA[cf1534E. Lost Array]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121196966</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121196966</guid><author>Johnny817</author><pubDate>Sun, 07 Nov 2021 20:59:32 +0800</pubDate><description><![CDATA[题目描述
题解
如果每个元素被都访问到奇数次则可以知道异或和，否则不知道。
就相当于给定一些向量的话，能否线性表出一个向量，其中表出方式为异或。
因此我们考虑如果目前有 iii 个元素为奇数次被访问了，把这 iii 个元素放在一个集合，每次在这个集合里选出 jjj 个元素踢出去，然后再从集合外选 k−jk-jk−j 个元素放进去。
因此只要 bfs\text{bfs}bfs 这个过程即可。
效率： O(nk)O(nk)O(nk) 。
代码
#include&lt;bits/stdc++.h&gt;
usin]]></description><category></category></item><item><title><![CDATA[cf103202M. United in Stormwind]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121188373</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121188373</guid><author>Johnny817</author><pubDate>Sun, 07 Nov 2021 10:26:29 +0800</pubDate><description><![CDATA[题目描述
题解
假设选出题目的集合为 SSS ，考虑求出它的数对数。
(i,j)(i,j)(i,j) 如果不相同，则 aixoraj&amp;S=0a_i \text{xor} a_j \&amp; S=0ai​xoraj​&amp;S=0 。
因此我们先用 fwt\text{fwt}fwt 求出异或值为 TTT 的数对数，然后对于 SSS 来说，如果 TTT 上的值能贡献答案，说明 S&amp;T&gt;0S \&amp;T&gt;0S&amp;T&gt;0 。
考虑容斥，减去 S&amp;T=0S\&a]]></description><category></category></item><item><title><![CDATA[cf102452I. Incoming Asteroids]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121188017</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121188017</guid><author>Johnny817</author><pubDate>Sun, 07 Nov 2021 09:38:18 +0800</pubDate><description><![CDATA[题目描述
题解
如果说这 kkk 个的和超过照相机的时间 sss ，那至少有一个值 ≥s/k\ge s/k≥s/k ，其中 s/ks/ks/k 取上整。
所以对每个星星维护一个堆，按照 s/ks/ks/k 从小到大排序，每次取出看是否符合条件即可。
每次取出， sss 至多变为 2/3×s2/3\times s2/3×s ，所以效率为 O(mlog⁡2mlog⁡2/3s)O(m \log_2 m \log_{2/3}s)O(mlog2​mlog2/3​s) 。
代码
#include&lt;bits/std]]></description><category></category></item><item><title><![CDATA[cf103202I. Rise of Shadows]]></title><link>https://blog.youkuaiyun.com/Johnny817/article/details/121134904</link><guid>https://blog.youkuaiyun.com/Johnny817/article/details/121134904</guid><author>Johnny817</author><pubDate>Thu, 04 Nov 2021 08:58:18 +0800</pubDate><description><![CDATA[题目描述
题解
很不会同余方程呜呜呜。
可以看成追击问题，于是我们经过化一些式子后能够得到个不等式：
如果对于一个整数 k∈[0,HM)k \in [0,HM)k∈[0,HM) ，存在整数 xxx ，满足
xHM−A≤k(H−1)≤xHM+AxHM-A \le k(H-1) \le xHM+AxHM−A≤k(H−1)≤xHM+A
那么这个 kkk 就满足要求
因此，有 −A≤k(H−1)−xHM≤A-A \le k(H-1)-xHM \le A−A≤k(H−1)−xHM≤A
若我们规定，对 HMHMHM 取]]></description><category></category></item></channel></rss>