<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chty_syq的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chty2018</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chty2018]]></copyright><item><title><![CDATA[新的独立博客]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/59089186</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/59089186</guid><author>chty2018</author><pubDate>Wed, 01 Mar 2017 12:37:30 +0800</pubDate><description><![CDATA[我的个人独立博客终于搭好了，欢迎诸位大佬前来访问

传送门 : http://www.chty.me]]></description><category></category></item><item><title><![CDATA[【bzoj3295】动态逆序对  CDQ分治]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56681359</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56681359</guid><author>chty2018</author><pubDate>Thu, 23 Feb 2017 21:32:52 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=3295
【题解】
这题很神。
我用的是popoqqq大爷的做法。
具体见http://blog.youkuaiyun.com/popoqqq/article/details/38761287
感觉这种做法似乎应该称为整体二分？
#include
#include
#include
#incl]]></description><category></category></item><item><title><![CDATA[【bzoj2683】简单题  CDQ分治+树状数组]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56668028</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56668028</guid><author>chty2018</author><pubDate>Thu, 23 Feb 2017 11:55:44 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=2683
【题解】
话说这题好像可以用整体二分来做（蒟蒻不会啊），CDCQ大神的整体二分比我的CDQ分治高到不知道哪里去了。
说一下做法吧：
首先把询问的矩形分成4部分，算一下每部分的答案，然后容斥原理即可。
怎样算每部分的答案呢？
我们按照时间分治，CDQ递归过程中按x排序，遇到]]></description><category></category></item><item><title><![CDATA[【bzoj3262】陌上花开  CDQ分治+树状数组]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56664914</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56664914</guid><author>chty2018</author><pubDate>Thu, 23 Feb 2017 09:17:52 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=3262
【易错点分析】
相信会写CDQ分治的人都会这道题，所以我就来讲一讲博主在做题时遇到的错误（ps：静态查错大法好）
1、tb的右端点多次打成r
2、排序过程中忘记定义z的优先级
3、被题目所坑：考虑两个属性值相同的花，它们的美丽值可以互相超过。。。所以要把相同的花缩成权值的形]]></description><category></category></item><item><title><![CDATA[【bzoj3238】差异  后缀自动机]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56663853</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56663853</guid><author>chty2018</author><pubDate>Thu, 23 Feb 2017 07:33:16 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=3238
【题解】
题上所给公式可以化为
\sum_{1
其中：
\sum_{1
=1×(n-1)+2×(n-2)+3×(n-3)+……+(n-1)×1+2×1+3×2+……+n×(n-1)
=(n+1)+2×(n+1)+3×(n+1)+……+(n-1)(n+1)
=(1+2+]]></description><category></category></item><item><title><![CDATA[【bzoj4566】找相同字符  后缀自动机]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56496120</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56496120</guid><author>chty2018</author><pubDate>Wed, 22 Feb 2017 20:33:29 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=4566
【题解】
我们还是先把A串建成SAM，然后让B串在SAM上跑
因为相同子串数=不同长度的子串数*出现次数
所以每个结点对答案的贡献就是Right[x]*(len-Min(x)+1)
我们知道SAM的一个性质：Min(x)-1=Max(parent(x))
所以贡献就是Ri]]></description><category></category></item><item><title><![CDATA[【bzoj1224】彩票  dfs]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56487689</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56487689</guid><author>chty2018</author><pubDate>Wed, 22 Feb 2017 16:17:35 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=1224
【题解】
裸的爆搜相信大家都会，这里我们主要来谈一谈剪枝。
此题使用上下界剪枝：对于当前状态，如果后面的数都选最大的仍不能到达目标状态，则当前状态为不合法状态，直接return，此为上界剪枝，下界剪枝同理。
最后膜一发popoqqq大爷，参考他的代码，我省略掉了一个for循环]]></description><category></category></item><item><title><![CDATA[【bzoj2555】SubString  后缀自动机+LCT]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56487395</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56487395</guid><author>chty2018</author><pubDate>Wed, 22 Feb 2017 16:09:32 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=2555
【题解】
我们把模板串建成SAM，那么一个串的出现次数就是在对应状态上的Right集的大小。
那么我们如何在线维护Right集的大小呢？可以用LCT/平衡树+dfs序
反正我用的是LCT，毕竟好写。
我们用LCT维护parent树，对于新加入的点，连一条通向parent的边]]></description><category></category></item><item><title><![CDATA[【spoj8222】Substrings  后缀自动机]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56306661</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56306661</guid><author>chty2018</author><pubDate>Tue, 21 Feb 2017 21:35:52 +0800</pubDate><description><![CDATA[AC通道：http://www.spoj.com/problems/NSUBSTR/
【题解】
我们知道，在SAM上对于一个结点s,Max(s)的出现次数就是right(s)
那么问题就是我们如何求出每个点的right集的大小。
我们知道，一个点的right集为它的儿子的right集的并集，所以我们按照拓扑序遍历每个点，同时更新它父亲的答案。
#include
#include
#inc]]></description><category></category></item><item><title><![CDATA[【spoj1812】Longest Common Substring II   后缀自动机]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56292347</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56292347</guid><author>chty2018</author><pubDate>Tue, 21 Feb 2017 19:00:05 +0800</pubDate><description><![CDATA[AC通道：https://vjudge.net/problem/SPOJ-LCS2
【题解】
我们先把其中一个串建成SAM，然后让其它的串在SAM上跑，同时更新每个结点的最大匹配数。每个结点的答案就是所有串在该结点的最大匹配数的最小值。
注意：在更新一个结点时，它的父亲必定已经到达过了，要返回去更新父亲的答案。
#include
#include
#include
#include
#in]]></description><category></category></item><item><title><![CDATA[最长公共子串  后缀自动机]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56277100</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56277100</guid><author>chty2018</author><pubDate>Tue, 21 Feb 2017 10:10:14 +0800</pubDate><description><![CDATA[【题目描述】
给定两个字符串A和B，求它们的最长公共子串
【分析】
我们考虑将A串建成后缀自动机
令当前状态为s，同时最大匹配长度为len
我们读入字符x。如果s有标号为x的边， 那么s=trans(s,x),len = len+1
否则我们找到s的第一个祖先a，它有标号为x的边，令 s=trans(a,x),len=Max(a)+1。
如果没有这样的祖先，那么令s=root,len]]></description><category></category></item><item><title><![CDATA[【CF#498C】Array and Operations  网络流]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56270369</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56270369</guid><author>chty2018</author><pubDate>Tue, 21 Feb 2017 08:27:27 +0800</pubDate><description><![CDATA[AC通道：http://codeforces.com/problemset/problem/498/C
【题目大意】
给你一个二分图，左边点的编号为奇数，右边为偶数，给出每个点的权值，每次操作可将图中有边相连的两个点的权值除以他们的一个公因数（不能是1），问最多可以执行多少次这样的操作。
【题解】

为了得到了最多的操作次数，每次操作一定是除以两个数的公共的质因数。
所以我们对于每一个]]></description><category></category></item><item><title><![CDATA[【bzoj3514】GERALD07加强版  LCT+主席树]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/56018766</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/56018766</guid><author>chty2018</author><pubDate>Mon, 20 Feb 2017 19:21:13 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=3514
【题解】
来自wulala大神的题解：
葱娘说这是一个很巧妙的题。。
有一个比较猎奇的做法：首先把边依次加到图中，若当前这条边与图中的边形成了环，那么把这个环中最早加进来的边弹出去
并将每条边把哪条边弹了出去记录下来：ntr[i] = j，特别地，要是没有弹出边，ntr[i]]></description><category></category></item><item><title><![CDATA[0219考试总结]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/55823098</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/55823098</guid><author>chty2018</author><pubDate>Sun, 19 Feb 2017 21:57:14 +0800</pubDate><description><![CDATA[T1
【题目大意】
n个人，每个人都有一枚邮票和一些喜欢的邮票。每次可以把任意个人的邮票进行一次轮换，并且轮换后每个人必须拿着一枚喜欢的邮票，求最终能否让每个人都拿到一枚喜欢的邮票。

【吐槽】
这题出得神坑，直把人往tarjan上带。
正解如下：
其实那个交换方式只是吓唬人的。
对于每一种分配方案，我们都可以构造出一种交换方案达到这样的效果。
所以就是判断能不能给每个人分配一枚]]></description><category></category></item><item><title><![CDATA[【CF#715C】Digit Tree  点分治+乘法逆元]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/55818951</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/55818951</guid><author>chty2018</author><pubDate>Sun, 19 Feb 2017 21:45:42 +0800</pubDate><description><![CDATA[AC通道：http://codeforces.com/problemset/problem/715/C
【题目大意】
给定一个有N个点的树，问其中有多少条路径满足他们的边权连成的数对M取余为0。
其中gcd(M,10)=1。

【题解】
首先是点分治的套路，然后这题的主要难点在如何统计连通块中的答案。
对于x→y的路径，也就是x→root→y，我们可以处理出dis[x]和dis[y]]]></description><category></category></item><item><title><![CDATA[【bzoj2084】Antisymmetry  manacher]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/55808159</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/55808159</guid><author>chty2018</author><pubDate>Sun, 19 Feb 2017 20:19:33 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=2084
【题解】
我们要求反对称的子串个数，只需要定义'#'='#'，'0'='1'，'0'≠'1'，'1'≠'0'，然后求回文子串个数即可。
直接上manacher，时间复杂度O(n)
#include
#include
#include
#include
#include
#in]]></description><category></category></item><item><title><![CDATA[【bzoj3697】采药人的路径  点分治]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/55657293</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/55657293</guid><author>chty2018</author><pubDate>Sat, 18 Feb 2017 11:12:13 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=3697
【题解】
来自出题人hta的题解：
本题可以考虑树的点分治。问题就变成求过根满足条件的路径数。
路径上的休息站一定是在起点到根的路径上，或者根到终点的路径上。
如何判断一条从根出发的路径是否包含休息站？只要在dfs中记录下这条路径的和x，同时用个标志数组判断这条路径是否存在]]></description><category></category></item><item><title><![CDATA[【bzoj2599】Race  点分治]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/55652683</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/55652683</guid><author>chty2018</author><pubDate>Sat, 18 Feb 2017 09:01:15 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=2599
【题解】
直接调用黄学长的题解：


开一个100W的数组t,t[i]表示权值为i的路径最少边数

找到重心分成若干子树后， 得出一棵子树的所有点到根的权值和x，到根a条边，用t[k-x]+a更新答案，全部查询完后

然后再用所有a更新t[x]

这样可以保证不]]></description><category></category></item><item><title><![CDATA[【bzoj2152】聪聪可可  点分治]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/55652195</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/55652195</guid><author>chty2018</author><pubDate>Sat, 18 Feb 2017 08:05:33 +0800</pubDate><description><![CDATA[AC通道：http://www.lydsy.com/JudgeOnline/problem.php?id=2152
【题解】
还是点分治的板子。
统计答案的方法值得一学：用t数组记录连通块中所有点的距离对3取模后的结果，然后当前的答案就是t[0]*t[0]+t[1]*t[2]*2，为什么要乘2呢？——因为同一个点对（u，v）聪聪选u可可选v与聪聪选v可可选u是不一样的。
#include
]]></description><category></category></item><item><title><![CDATA[【poj1741】tree  点分治]]></title><link>https://blog.youkuaiyun.com/chty2018/article/details/55652173</link><guid>https://blog.youkuaiyun.com/chty2018/article/details/55652173</guid><author>chty2018</author><pubDate>Sat, 18 Feb 2017 07:20:08 +0800</pubDate><description><![CDATA[【题目大意】
给一颗n个节点的树，每条边上有一个距离v（v
定义d(u,v)为u到v的最小距离；
给定k值，求有多少点对（u，v）使u到v的距离小于等于k。

其中n
【题解】
蒟蒻发现很久以前学的点分治已经忘得差不多了，于是恶补一发
所谓点分治，就是枚举每一个点为根的情况，计算当前根对答案的贡献。
具体可以参考http://www.cnblogs.com/chty/p/5912]]></description><category></category></item></channel></rss>