<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[alpc_wt的专栏]]></title><description><![CDATA[弱弱的我。。。]]></description><link>https://blog.youkuaiyun.com/alpc_wt</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; alpc_wt]]></copyright><item><title><![CDATA[Codeforces Round #260 (Div. 1) B. A Lot of Games Trie + 博弈]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/48657377</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/48657377</guid><author>alpc_wt</author><pubDate>Tue, 22 Sep 2015 18:21:03 +0800</pubDate><description><![CDATA[题意：两个人在Trie树上博弈k局，当前局输的人在下一局中执先手。在一局博弈中，当一个人不能走时，判定另一个人赢。最后一局的结果作为整个游戏的结果。
分析：先手赢的情况为：（1）先手可必胜，也 可败。那么前k-1局败，最后一局胜利即可。
（2）先手只能必胜。 当k为奇数时获胜。
   后手赢的情况为：（1）先手必败。
（2）先手只能必胜。 k为偶数。


（本题的状态为取完当前节点的]]></description><category></category></item><item><title><![CDATA[回文树练习]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/48492183</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/48492183</guid><author>alpc_wt</author><pubDate>Wed, 16 Sep 2015 13:02:10 +0800</pubDate><description><![CDATA[回文树的题目一般只有几种类型，主要是应用cnt,num
1.ural1960. Palindromes and Super Abilities
http://acm.timus.ru/problem.aspx?space=1&num=1960

题意：每加入一个字符，询问不同回文串种类
题解：每次调用add后，输出p（节点个数）即可
代码：
#include
#include
#in]]></description><category></category></item><item><title><![CDATA[Palindromic Tree 回文自动机-回文树 解决回文串的神器]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/48491555</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/48491555</guid><author>alpc_wt</author><pubDate>Wed, 16 Sep 2015 12:13:18 +0800</pubDate><description><![CDATA[回文树，也叫回文自动机，是2014年夏天战斗民族发明的，其功能如下：
1、求前缀字符串中的本质不同的回文串种类
2、求每个本质不同回文串的个数
3、以下标i为结尾的回文串个数/种类
4、每个本质不同回文串包含的本质不同回文串种类
（本文参考自Palindromic Tree——回文树【处理一类回文串问题的强力工具】）


在回文树中，每一个节点代表一个本质不同的回文串，因为长度为n]]></description><category></category></item><item><title><![CDATA[2015湖南省赛A题 BZOJ4254 Aerial Tramway 树形dp]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/48207633</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/48207633</guid><author>alpc_wt</author><pubDate>Fri, 04 Sep 2015 11:15:47 +0800</pubDate><description><![CDATA[题目：http://www.lydsy.com/JudgeOnline/problem.php?id=4254
题意：按照规则选m条线段，使得不超过k限制，得到权值和最大。
题解：按照给定的规则，一条合法的线段下面必须全部低于此线段，也就是每一个线段一定被某个线段的完全覆盖，且不会出现线段非重合相交的情况。故所有的线段依据覆盖关系可形成一个森林，创建虚拟节点0，使得构建一棵树。然后就是树形dp]]></description><category></category></item><item><title><![CDATA[ZOJ3891 K-hash 后缀自动机SAM]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/48161271</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/48161271</guid><author>alpc_wt</author><pubDate>Tue, 01 Sep 2015 18:03:52 +0800</pubDate><description><![CDATA[题目：http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5561
题意：给出一个整数K(


本题属于SAM入门题，当时在做zoj月赛时还没学，学完后发现很简单。果然SAM功能很强大。
题解：建造后缀自动机，按拓扑序从小到大进行dp，记录到此节点取模得到d的方案数。
具体一点，y->num[(i*10+j)] += x]]></description><category></category></item><item><title><![CDATA[区间dp小结]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/47912125</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/47912125</guid><author>alpc_wt</author><pubDate>Sun, 23 Aug 2015 23:58:53 +0800</pubDate><description><![CDATA[今天刷了一遍 kuangbin带我飞之区间dp，做一下总结
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=77874#overview

不知道看的谁的博客的一句话，区间最优解问题一般都是区间dp。有道理，资瓷呀！
NO.1 hdu 3537 cake
题意：给一个n个点的多边形（不一定是凸包），用n-3条线段切成n-2个三角]]></description><category></category></item><item><title><![CDATA[woj1572 Cyy and Fzz KMP / AC自动机  + DP]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/47760769</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/47760769</guid><author>alpc_wt</author><pubDate>Tue, 18 Aug 2015 22:24:38 +0800</pubDate><description><![CDATA[题目：http://acm.whu.edu.cn/land/problem/detail?problem_id=1572
题意:  有n个目标串，长度均小于15，（n


比赛的时候还以为是水题，其实是自己太水。这种题一般是AC自动机的中等题，本题也可以用KMP做，结合状压dp。


方法一：AC自动机
建完Trie树后，就是跑一遍dp，注意单词节点要 |=(1
dp过程： 用]]></description><category></category></item><item><title><![CDATA[hdu5304 Eastest Magical Day Seep Group's Summer 状压dp+生成树]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/47065709</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/47065709</guid><author>alpc_wt</author><pubDate>Sun, 26 Jul 2015 10:21:40 +0800</pubDate><description><![CDATA[题目：http://acm.hdu.edu.cn/showproblem.php?pid=5304
16个点的无向图，问能生成多少个n条边的连通图。（即多一条边的树）


先n^3 * 2^n 枚举所有的环，状压dp就行。dp[i][j]表示以i为终点，走了j状态集合的方案数。要枚举起点，每次走比起点大的点。所以要n^3 2^n枚举。


把环压缩成点，构造基尔霍夫矩阵，每种状态下n]]></description><category></category></item><item><title><![CDATA[hdu4305Lightning 生成树计数（基尔霍夫矩阵）+高斯消元+逆元]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/47057517</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/47057517</guid><author>alpc_wt</author><pubDate>Sat, 25 Jul 2015 16:32:38 +0800</pubDate><description><![CDATA[题目：http://acm.hdu.edu.cn/showproblem.php?pid=4305
题意：比较裸的生成树计数问题。
  如何处理生成树计数问题？
基尔霍夫矩阵：
if i==j  Kir[i][j] = i的度数
if i!=j   Kir[i][j] = i到j的平行边的个数的负数
即，基尔霍夫矩阵 = 度数矩阵 - 邻接矩阵


将基尔霍夫矩阵删去第i行和第i]]></description><category></category></item><item><title><![CDATA[hdu5293 Tree chain problem 树形dp+线段树]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46999729</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46999729</guid><author>alpc_wt</author><pubDate>Wed, 22 Jul 2015 10:38:56 +0800</pubDate><description><![CDATA[题目：http://acm.hdu.edu.cn/showproblem.php?pid=5293
在一棵树中，给出若干条链和链的权值，求选取不相交的链使得权值和最大。


比赛的时候以为是树链剖分就果断没去想，其实是没思路。
看了题解，原来是树形dp，话说多校第一场树形dp还真多。。。。


维护d[i],表示以i为根节点的子树的最优答案。
sum[i]表示i的儿子节点（只能是]]></description><category></category></item><item><title><![CDATA[51NOD算法马拉松 最大值问题   离线预处理+set lower_bound]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46762043</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46762043</guid><author>alpc_wt</author><pubDate>Sun, 05 Jul 2015 11:08:08 +0800</pubDate><description><![CDATA[题目：http://www.51nod.com/contest/problem.html#!problemId=1349
题意：100000个数的序列，有100000次询问，每次问区间最大值大于等于k的区间有多少？


思路：一开始没看到“大于等于”，想了很久也不会，原来看错题了。看错题害死人。
一般询问的问题，如果不能用线段树log(n)求出，那么就离线做。
首先将询问按从大到小排序]]></description><category></category></item><item><title><![CDATA[cf451E Devu and Flowers 卢卡斯定理+容斥定理]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46742905</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46742905</guid><author>alpc_wt</author><pubDate>Fri, 03 Jul 2015 16:08:39 +0800</pubDate><description><![CDATA[题目：http://codeforces.com/problemset/problem/451/E
题意：有n个盒子（n


组合数学问题，求C(n,m).但n,m过大时，可用卢卡斯定理.
卢卡斯定理：C(n,m) %p = C(n/p,m/p) * C(n%p,m%p)


从n个盒子中取出s个球的方案数，相当于插板，即 C(s+n-1,n-1).注意这是没有限制条件的情况。
]]></description><category></category></item><item><title><![CDATA[hdu5274 Dylans loves tree  LCA+线段树]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46733539</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46733539</guid><author>alpc_wt</author><pubDate>Thu, 02 Jul 2015 23:39:44 +0800</pubDate><description><![CDATA[题目：http://acm.hdu.edu.cn/showproblem.php?pid=5274 
  在树上的询问和操作，每次修改单点值，询问两点之间出现次数为奇数的点权是什么，若没有输出-1.询问保证两点间至多只有一个数出现奇数次。
  
  有一种经典的将树上的点转化成序列的方法，我们用dfs遍历这棵树，那么对于一个节点，他一点比他的子树即子节点先访问到，且当他的最后一个子节点的所有子树也都]]></description><category></category></item><item><title><![CDATA[Codeforces Round #309 (Div. 1)D. Nudist Beach 二分+bfs]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46673493</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46673493</guid><author>alpc_wt</author><pubDate>Sun, 28 Jun 2015 19:39:16 +0800</pubDate><description><![CDATA[题目：http://codeforces.com/contest/553/problem/D
  在一个无向图中，有若干坏点，选择一个不包含坏点的集合，使得集合中p值最小的点的p值最大。一个点的p值=集合中与该点相连的点的个数 / 与改点相连的总点数.]]></description><category></category></item><item><title><![CDATA[Looksery Cup 2015 H. Degenerate Matrix]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46580671</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46580671</guid><author>alpc_wt</author><pubDate>Sun, 21 Jun 2015 10:19:07 +0800</pubDate><description><![CDATA[又学会了二分的新用法，
其实二分可以设置固定的二分次数作为跳出条件，当次数达到一定时，一定可以的到解，可以解决因精度而T的情况。
向群神致敬。
题目：http://codeforces.com/contest/549/problem/H
代码：
#include
#include
#include
#include
#include
#include
#include
#include
]]></description><category></category></item><item><title><![CDATA[hdu3530 Subsequence 单调队列]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46558773</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46558773</guid><author>alpc_wt</author><pubDate>Fri, 19 Jun 2015 10:19:42 +0800</pubDate><description><![CDATA[题目：在一个序列中找一个最长子串，使得子串的m
维护一个递减的单调队列q1（队首为当前最大），同时维护一个递增的单调队列q2（队首为当前最小），控制最大减最小 小于等于k ， 若最大减最小大于等于m，则更新答案。
代码：
#include
#include
#include
#include
#include
using namespace std;
const int N = 1e5+10]]></description><category></category></item><item><title><![CDATA[hdu5261蜀道难 单调队列]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46558625</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46558625</guid><author>alpc_wt</author><pubDate>Fri, 19 Jun 2015 10:10:08 +0800</pubDate><description><![CDATA[题目：一个圆周被均匀分成n个点，每个点有一个高度h[i]，定义两个点的距离是dis(i,j) = h[i] + h[j] + (劣弧i，j).问最长距离的点对，要求字典序最小。


单调队列：因为是圆周，要先把圆周变成链，倍增即可。在2n的链上，维护一个 h[i]-r*i 的单调递减队列，控制队列元素个数
为什么要维护h[i]-r*i的递减队列呢？因为革更新答案时 是用h[i]+r*i +]]></description><category></category></item><item><title><![CDATA[HDU4407Sum 容斥定理]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46226187</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46226187</guid><author>alpc_wt</author><pubDate>Fri, 29 May 2015 10:23:51 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=4407
题意：在1E5个数中求某段区间中和p互素的数和。有1000次操作，每次操作可能是询问，可能是修改单点值。
注意！！初始时，序列是1,2.....n，很关键呀。操作数很少，可以用map存下修改操作，每次询问求cal(r,p)-cal(l-1,p),在加上修改的影响。
cal(r,p)可用容斥]]></description><category></category></item><item><title><![CDATA[HDU5072Coprime 容斥原理+双色三角形 2014 Asia AnShan Regional Contest]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46224625</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46224625</guid><author>alpc_wt</author><pubDate>Fri, 29 May 2015 08:35:48 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=5072
题意：在1e5个数（<=1e5）中，找出有多少对(a,b,c) , 满足 ( gcd(a,b)==1 && gcd(a,c)==1 && gcd(b,c)==1 ) || (
gcd(a,b)!=1 && gcd(a,c)!=1 && gcd(b,c)!=1 ) .
这很像白书上一道双色三]]></description><category></category></item><item><title><![CDATA[Codeforces Round #305 (Div. 2) E. Mike and Foam  容斥原理]]></title><link>https://blog.youkuaiyun.com/alpc_wt/article/details/46137671</link><guid>https://blog.youkuaiyun.com/alpc_wt/article/details/46137671</guid><author>alpc_wt</author><pubDate>Thu, 28 May 2015 23:41:50 +0800</pubDate><description><![CDATA[在一个集合中，找和x互素的数有多少？
用容斥定理，先把每个数质因数分解（每个数至多有6个质因子），奇减偶加，就统计到和x互素的数了。
代码：
#include
#include
#include
#include
#include
using namespace std;
const int N = 5*100000+10;
const int maxn = 5*100000;

int c]]></description><category></category></item></channel></rss>