自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

poursoul

仔细读题!不要偷懒!多看Clarification!

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 【HDU】4322 Candy 【最小费用流——给每条边一个被流优先级】

传送门:【HDU】4322 Candy前言:这道题我做了近两个星期,终于艹出来了,真的是太弱了…… 在上周日的时候,想到一个O(N∗3N)O(N*3^N)的BFS算法,然后果不其然的TLE了,然后测了下发现这题有超过200组数据,真是‘哔——’了狗了……题目分析: 首先,我们只考虑糖果对喜欢该糖果的小朋友的贡献,如果小朋友i喜欢糖果j,那么我们建边j->i,容量1,费用0。如果这条边被流过,说明

2015-05-30 13:03:23 1200 1

原创 【HDU】5238 Calculator 【中国剩余定理+线段树】

传送门:【HDU】5238 Calculator题目分析:模数可以拆成四个小素数:7,13,17,19。 这样我们可以分别对这几个素数跑答案,最后中国剩余定理搞一下就好。中间我们用线段树,保存每个模数下,一个数通过一个区间内的操作转化成的另一个数是多少,并且这个满足合并,然后就做完了。PS:听叉姐他们说才知道……完全可以不用中国剩余定理,直接暴力打一个4维数组存下来就可以了……my  code:m

2015-05-29 12:55:06 1847

原创 【HDU】5244 inverse【打表找规律——FFT】

传送门:【HDU】5244 inverse题目分析:将f(i,j)f(i,j)看成矩阵XX,AA为ai数组,BB为bi数组,则有:AX=BAX=B,推出A=BX−1A=BX^{-1}首先根据题意打一个X−1X^{-1},然后就可以发现规律……然后就可以用FFTFFT的思想去做这道题了……具体不说了,这样的东西谁试谁知道,反正我一步都不会证明,不会憋别找我……my  code:my~~code:#in

2015-05-28 22:30:42 1241

原创 【codeforces】Codeforces Round #305 (Div. 1)E. Mike and Friends【后缀数组+线段树】

传送门:【codeforces】Codeforces Round #305 (Div. 1)E. Mike and Friends题目分析:这题用后缀数组来做,十分直观(另一个原因是我后缀自动机并不会,只做过一道模板题,性质都不知道)。我的方法是O(nlog2n)O(nlog^2n),O(nlogn)O(nlogn)的方法就是把线段树换成主席树来实现(不想再改了)。首先将串接在一起,然后用后缀数组得

2015-05-27 19:20:57 1100

原创 【HDU】4658 Integer Partition【生成函数——数拆分】

传送门:【HDU】4658 Integer Partition题目分析:用了五边形数定理以及生成函数,然而我看懂了生成函数怎么搞这题却不知道为啥生成函数是五边形数形式= =首先观察下面的图片:很容易我们可以发现用这种方式构造N个五边形(假设一个点也算一个五边形),需要点的个数为: n∗(3n−1)2\frac{n*(3n-1)}{2}接下来我们来看一下数拆分。 提问:将一个正整数NN拆成不少于一

2015-05-18 21:32:51 2943 5

原创 【Tinsen】A1493. 城市规划【简单无向连通图个数——NTT】

传送门:【Tinsen】A1493. 城市规划前言:今天很不在状态= =,NTT里面竟然同一个地方写错两次……而且脑补的时候明显比平时迟钝了很多……题目分析:首先我们可以轻易知道N个点能构成的无向图的个数:2C2n2^{C_n^2},令其等于d(N)d(N)。然后假设我们固定一个点,枚举这个点所在连通块的大小,这样我们得到N个点的无向连通图公式: dp[n]=d(n)−∑n−2i=0Cin−1dp

2015-05-15 21:31:41 2951

原创 【openjudge】C15C Rabbit's Festival【CDQ分治+并查集】

传送门:【openjudge】C15C Rabbit’s Festival题目分析:考虑到每条边最多只断一天,我们可以用cdq来模拟这个过程。假设当前区间为[l,r][l,r],令m=(l+r)/2m=(l+r)/2,选择[l,m][l,m]区间时,我们便将[m+1,r][m+1,r]内的边全部使用掉,然后递归处理[l,m][l,m]部分。处理完[l,m][l,m]部分后我们将[m+1,r][m+1

2015-05-14 19:37:11 1332

原创 【HDU】5227 Tom and game【快速求gcd值+点分治】

传送门:【HDU】5227 Tom and game前言:在数论大神队友的帮助下知道了怎么预处理……然后我就套了一个点分治就过了……题目分析:其实对于一个四元组,我们可以看成一个狮子堆,他能转移到的状态有多少,他就是多少高的石子堆……然后一条路径上所有的石子堆用来做游戏,其实就相当于经典的取石子的Nim和游戏……只要异或和不为0,先手胜,反之后手胜。对于路径上异或和不为0的路径条数,我们可以用点分治

2015-05-13 16:33:54 1317

原创 【BNU】39676 Point Distance【FFT求矩阵中点对的欧几里德距离】

传送门:【BNU】39676 Point Distance题目分析:纠结了好久,终于搞定了……首先我们定义: Dx,y=∑n−1i=0∑n−1j=0Ci,jCi+x,j+y\qquad \qquad D_{x,y}=\sum_{i=0}^{n-1}\sum_{j=0}^{n-1} {C_{i,j}C_{i+x,j+y}}Dx,yD_{x,y}表示两个点对之间行距为x,列距为y的对数。然后我们将点映

2015-05-12 21:14:11 1141

原创 【codeforces】543D. Road Improvement【树形DP】

传送门:【codeforces】543D. Road Improvement题目分析:dp方程很水= =,设dp[u]为以u为根的子树的合法方案数。对于一个节点u考虑所有儿子v,则有dp[u]=∏\prod(dp[v]+1)。考虑以1为根,那么一次树形dp以后我们就得到了1为根的方案数,接下来我们还需要一次dp来换根。由于0的逆元不存在,所以本题我们简单的用逆元是错误的!然后我们考虑前缀积以及后缀积

2015-05-08 23:36:11 1174

原创 【Live Archive】7148 - LRIP【2014上海区域现场赛L】【树分治+线段树】

传送门:【Live Archive】7148 - LRIP#include <stdio.h>#include <string.h>#include <set>#include <map>#include <math.h>#include <vector>#include <algorithm>using namespace std ;typedef long long LL ;#de

2015-05-08 20:06:01 1303 3

原创 【codeforces】528D. Fuzzy Search【FFT】

传送门:【codeforces】528D. Fuzzy Search题目分析:首先,我们先来了解一下FFTFFT求字符串匹配的方法。问题:求BB串在AA串中匹配的次数。解法: 我们用aia_i表示串AA第ii个位置的字符,bjb_j表示串BB第jj个位置的字符。AA串用多项式表示为: A=∑ni=1xi=∑ni=1A(i)\qquad\qquad A = \sum_{i=1}^n x^i=\su

2015-05-07 19:55:48 2730

原创 【Live Archive】4671 - K-neighbor substrings【FFT+后缀数组】

传送门:【Live Archive】4671 - K-neighbor substrings题目分析:和Ural 1996那题很像,都是通过将一个串反转后就可以将匹配变成卷积了。 由于从AA串中取出来的串是本质不同的,所以这里我用了后缀数组(用后缀数组纯粹是因为我懒= =)做了处理:处理出的heightheight数组,heightiheight_i表示字典序第ii小的后缀和字典序第i−1i-1小

2015-05-07 16:44:15 1340

原创 【ural】1996. Cipher Message 3【FFT+KMP】

传送门:【ural】1996. Cipher Message 3题目大意:问至少将多少个AA串的字节的最低位取反使得BB串是AA串的子串。题目分析:可以发现,只要将BB串翻转一下,AA串和BB串的匹配就符合一个卷积公式了。令aia_i为A串第ii个字节的最低位,bjb_j为B串第jj个字节的最低位(ai,bj∈{0,1}a_i,b_j\in \{0,1\})。AA串用多项式表示为: A=∑ni=1

2015-05-07 14:55:53 1147

原创 【Live Archive】6393 Self-Assembly【强连通】

传送门:【Live Archive】6393 Self-Assembly题目分析:假设我们只用到向上或者向右的块,这样我们只要找到一个回路使得某个块可以和第一个块一样,那么我们就相当于找到了一个循环,这样就可以无限循环了。但是我们要怎样去找这么一个环?考虑到必须是对应字母X+,X−X^+,X^-才能建边,然后一个环中一定是多个一对一对的这样的对应字母组成的。可以发现块的数量那么大也是无所谓的,因为我

2015-05-06 21:37:54 747

原创 【Live Archive】6395 SurelyYouCongest【最短路+最大流】

传送门:【Live Archive】6395 SurelyYouCongest题目分析:我们只要从点1开始做一次最短路预处理,然后对于给定的源点们,对于最短路图构成一个层次图,然后由于每一层都是互不影响的,所以我们对每一层暴力跑网络流就好了。my  code:my~~code:#include <stdio.h>#include <string.h>#include <set>#include

2015-05-06 21:15:03 822

原创 【HDU】5217 Brackets【线段树】

传送门:【HDU】5217 Brackets题目分析:线段树区间合并。可以求出区间内不匹配的两种括号的个数。然后我们判断一下是否是-1,然后判断这个括号是右括号还是左括号,如果是右括号,我们从左往右合并,然后就可以二分出所在的区间了。左括号就相反。my  code:my~~code:#include <stdio.h>#include <string.h>#include <math.h>#i

2015-05-03 19:28:47 1071

原创 【HDU】5221 Occupation【树链剖分】

传送门:【HDU】5221 Occupation题目分析:最直接的想法,用一棵树链剖分维护路径,一棵dfs序线段树维护子树。因为每次最多修改一个点,所以修改的时候我们暴力修改每个点就可以了。my  code:my~~code:#pragma comment(linker, "/STACK:102400000,102400000")#include <stdio.h>#include <stri

2015-05-03 11:35:10 1176

并查集分类1

大家尽管下载,并查集专题现在已经上传,尽请期待

2014-03-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除