自定义博客皮肤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!

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

原创 【HDU】5362 Just A String【生成函数dp】

传送门:【HDU】5362 Just A String这题整整想了我两天= =终于搞出来了。 一开始写出O(N3)O(N^3)的dp,转化一下,可以搞出一个生成函数,然后展开生成函数可以发现系数是二项式,然后对于枚举的长度i取出第i项就可以了。有个优化是发现奇数长度的回文串和偶数长度的回文串的贡献是一样的,所以不需要特殊处理奇数了。my  code:my~~code:#include <bits/

2015-08-08 10:41:57 1451

原创 【HDU】5343 MZL's Circle Zhou【后缀自动机】

传送门:【HDU】5343 MZL’s Circle Zhou对于a串可能和b串重复的部分,我们总能找到一个位置,使得a串达到最长,即a串的后继为空,所以我们只要预处理以字符x为开头的b串的个数即可。my  code:my~~code:#include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define clr( a

2015-08-05 22:13:08 1504

原创 【codechef】 Prime Distance On Tree【求树上路经长度为i的路径条数】【点分治+FFT】

传送门:【codechef】 Prime Distance On Tree点分治+FFT水题……竟然n*n爆int没发现…… 而且NTT TLE,FFT跑的超级快……my  code:my~~code:#include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a

2015-08-05 10:50:08 1524

原创 【51nod】算法马拉松4 F 移数字 【快速求N!%P】【FFT】

传送门:【51nod】算法马拉松4 F 移数字涉及知识点:多项式求逆,多项式除法,多点插值,阶乘取模。对于N!%P,复杂度为O(N−−√log2N−−√)O(\sqrt N \log^2\sqrt N)。 但常数巨大,和暴力算实际复杂度只相差常数= = 这个是可以扩展到组合数取模的~my  code:my~~code:#include <stdio.h>#include <string.h>

2015-08-03 21:06:22 2026

原创 【HDU】5333 Undirected Graph【LCT+BIT】

传送门:【HDU】5333 Undirected Graphmy  code:my~~code:#pragma comment(linker, "/STACK:1024000000")#include <stdio.h>#include <string.h>#include <map>#include <algorithm>using namespace std ;typedef long

2015-07-31 13:07:53 1330

原创 【ZOJ】3881 From the ABC conjecture【暴力容斥】

传送门:【ZOJ】3881 From the ABC conjecture复杂度大概O(N0.67)O(N^{0.67}),我也不会算www,首先转换一下(我们是根据积性函数打表找规律得到的,也可以推出来)使得: g(N)=∏pi ϵ N(pia+1)g(N)=\prod_{pi~\epsilon ~N} (pi^a+1) 暴力展开发现贡献为: h(N)=∑x=1N∑y=1N(x⋅y≤N an

2015-07-29 17:12:38 1121

原创 【HDU】5321 Beautiful Set【枚举k求贡献,欧拉函数应用】

传送门: 【HDU】5321 Beautiful Setmy  code:my~~code:#include <stdio.h>#include <string.h>#include <vector>#include <algorithm>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a ,

2015-07-29 12:09:12 1168

原创 【HDU】5320 Fan Li【线段树】

传送门:【HDU】5320 Fan Limy  code:my~~code:#include <stdio.h>#include <string.h>#include <vector>#include <algorithm>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x , size

2015-07-28 21:56:33 1440 2

原创 【ZOJ】3889 Making Sequence【构造】

传送门:【ZOJ】3889 Making Sequence根据题意构造即可。ZOJ月赛我们抢的第二个FBwwwmy  code:my~~code:#include <bits/stdc++.h>using namespace std ;typedef unsigned long long ULL ;const int MAXN = 205 ;ULL n , a , b , s , t ;ULL

2015-07-28 09:25:26 1132

原创 【ZOJ】3886 Nico Number【线段树】

传送门:【ZOJ】3886 Nico NumberYY方法出只有2的幂次和素数是等差的,打表验证发现只有6是反例,注意到0项也是等差,所以0和1也算。每个数最多logn次取模,所以区间更新暴力到叶子就行。ZOJ月赛的时候抢了这题的FB ^_^my  code:my~~code:#include <bits/stdc++.h>using namespace std ;typedef long lon

2015-07-28 09:01:37 857

原创 【HDU】5314 Happy King【动态树(点分治)】

传送门:【HDU】5314 Happy King算法分析: 点分治,子树去重类可做。对于一个重心,取出所有路径按照最大值排序,扫下最小值,插入到线段树里维护个数,双指针扫扫解决。然后对所有重心的儿子对应的子树再做一次去重。这个方法我是今早在床上想了下想到的。 我是动态树,动态树比较裸,对点权排序,然后双指针扫扫,接下来就是链接两棵子树或者拆分两棵子树时的子树的siz。子树siz可以用两个变量维护

2015-07-27 16:29:37 1846

原创 【HDU】5313 Bipartite Graph【二分图+背包】

传送门:【HDU】5313 Bipartite Graph复杂度:O(NN√logN32)O(\frac{N\sqrt{N}\log{N}}{32}) 方法:多重背包bitset优化my  code:my~~code:#include <stdio.h>#include <string.h>#include <bitset>#include <algorithm>using namespa

2015-07-27 16:13:31 821

原创 【HDU】5309 JRY is Fighting【DP】

传送门:【HDU】5309 JRY is Fightingmy  code:my~~code:#include <bits/stdc++.h>using namespace std ;typedef long long LL ;const int MAXN = 500005 ;int a[MAXN] ;int R[MAXN] ;int d[MAXN] ;int nxt[MAXN] ;int

2015-07-27 16:05:25 1195

原创 【HDU】5307 He is Flying【分别统计+NTT】

传送门:【HDU】5307 He is FlyingPS:神奇的姿势可以用double或long double过(FFT),我是过不了my  code:my~~code:#include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define clr(a,x) memset ( a , x , sizeof a )cons

2015-07-27 16:03:42 1586

原创 【HDU】5304 Eastest Magical Day Seep Group's Summer【环dp+生成树计数】

传送门:【HDU】5304 Eastest Magical Day Seep Group’s Summermy  code:my~~code:#include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x , sizeof a )const int MAXN

2015-07-27 15:58:56 864

原创 【HDU】 5302 Connect the Graph【构造】

传送门:【HDU】 5302 Connect the Graphmy  code:my~~code:#include <bits/stdc++.h>using namespace std ;typedef long long LL ;typedef unsigned long long ULL ;const int MAXN = 10005 ;int y[MAXN][2] ;void solve

2015-07-27 15:57:53 802

原创 【HDU】5298 Solid Geometry Homework【暴力+二分图】

传送门:【HDU】5298 Solid Geometry Homeworkmy  code:my~~code:#include <stdio.h>typedef long long LL ;struct Node { LL x , y , z , d ;} a[100] , b[10] ;int n , m , p , q ;LL f ( LL x ) { return ( LL

2015-07-27 15:54:39 890

原创 【HDU】5296 Annoying problem【树链剖分+分类讨论】

传送门:【HDU】5296 Annoying problem这题我是分类讨论做的,没想到多校题解的方法my  code:my~~code:#include <stdio.h>#include <string.h>#include <algorithm>using namespace std ;typedef long long LL ;#define clr(a,x) memset ( a ,

2015-07-27 15:52:24 935

原创 【HDU】5293 Tree chain problem【DP+LCA】

传送门:【HDU】5293 Tree chain problemmy  code:my~~code:/************************************************************************* > File Name: F.cpp > Author: poursoul > Created Time: 2015年07月22

2015-07-27 15:48:50 645

原创 【HDU】5291 Candy Distribution 【DP+打标记】

传送门:【HDU】5291 Candy Distributionmy  code:my~~code:/************************************************************************* > File Name: D.cpp > Author: poursoul > Created Time: 2015年07月22

2015-07-27 15:44:58 1188

原创 【HDU】5290 Bombing plan 【树形DP】

传送门:【HDU】5290 Bombing planmy  code:my~~code:#include <stdio.h>#include <string.h>#include <vector>#pragma comment(linker, "/STACK:16777216")#include <algorithm>using namespace std ;typedef long lo

2015-07-27 15:42:26 1360

原创 【快速筛可能是大费马素数的数】

为什么写这样一篇博客呢……,原因是今天的多校有道题用到了NTT,然后用双模数然后中国剩余定理我被卡到死,直到我中间运算数组换成了int才卡过。之后我发现,竟然有一个O(1)的大数快速乘法(进行运算的数都在long long内)。根据这个,我发现NTT完全可以通过寻找一个超级大的费马素数来实现(比运算后的系数还大~),代替双模数的中国剩余定理的NTT写法,因为这个常数太大了……通过我无聊到极点的耐心,

2015-07-24 00:37:43 1254 2

原创 【HDU】5279 YJC plays Minecraft【cdq分治+NTT】

传送门:【HDU】5279 YJC plays Minecraft忘记修改测试时的分治大小交了一发,不然就1A了……整个题目的关键在对N个点的森林个数计数,这个我是昨晚躺床上突然想到的www,不过队友早就过了……膜拜之。dp一直是我的弱点啊= =令fnf_n为n个点的生成树个数,幸运的是fn=nn−2f_n=n^{n-2}。则对于n个点的森林个数,有公式: dpn=∑i=1ndpn−iCi−1n−

2015-07-09 11:48:18 1360

原创 【codeforces】338E. Optimize! 【线段树】

传送门:【codeforces】338E. Optimize! 题目分析: 这题有两种解法,一个O(nn−−√)O(n\sqrt n)的,一个O(nlogn)O(nlogn)。 首先我们要转换下题意,题目描述的函数,我们可以这么考虑,a数组区间[L,L+len-1]中最大的元素和b数组中最小的元素,a中第二大的元素和b中第二小的元素……每一对的和都大于等于h。我们让b[i] = h - b[i]

2015-07-03 01:17:06 2989 1

原创 【codeforces】Codeforces Round #311 (Div. 2)only 【题解】

传送门:【codeforces】Codeforces Round #311 (Div. 2)A. Ilya and DiplomasB. Pasha and TeaC. Arthur and TableD. Vitaly and CycleE. Ann and Half-Palindrome题目分析: 首先,先说明下,我是十分十分十分暴力的做的,在不考虑空间复杂度的前提下……一开始我们预处理出[L

2015-07-01 01:55:53 1018

原创 【HDU】5275 Dylans loves polynomial【拉格朗日插值法】

传送门:【HDU】5275 Dylans loves polynomial题目分析:首先,队友给了我一个拉格朗日插值法的公式,裸的OWO,如下: ∑i=lr{yi∏i!=j(xi−xj)∏i!=j(x−xj)}\sum_{i=l}^{r}\{\frac{y_i}{\prod_{i!=j}(x_i-x_j)}\prod_{i!=j}(x-x_j)\} 只要把题目给的坐标带入xi,xj,yi,xx_i,x_j,y

2015-06-29 19:40:28 1313 2

原创 【HDU】5267 pog loves szh IV【动态点分治】

传送门:【HDU】5267 pog loves szh IV题目分析:首先我们用树分治,对每一个分治重心,以此为根的子树,建立一棵线段树。可以发现总节点数只有$O(NlogN)$,因为每一层都是$N$个节点,且只有$logN$层。然后,还有一个特点就是,一个点最多属于$logN$个中心,这样我们查询和更新,就是在$logN$重心树中用$logN$的复杂度更新线段树的区间。线段树的每个叶节点

2015-06-29 19:25:22 781

原创 【codeforces】Codeforces Round #310 (Div. 1)【题解】

传送门:【codeforces】Codeforces Round #310 (Div. 1)好久没写题解了,今天来补个好了…… 这一场div1大概是我见到过的对我来说最容易的一场了……除了A题意略坑,C纠结了一会,其他题都是一眼秒……A. Case of Matryoshkas 题意:一共有N个套娃,现在放成M堆,每一堆满足小的嵌套在大的里面,有个限制就是,一个套娃不能同时嵌套两个套娃。然后每秒

2015-06-28 12:50:54 1111

原创 2015年百度之星程序设计大赛 - 初赛(2)【题解】

1001.追星族 Accepts: 21 Submissions: 122 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description度度熊最近迷上了S明星,恰逢她正在巡回演出,得知所有的演出安排后,它希望一场不落的看完所有的演出。每场演出的地点

2015-06-02 16:54:30 3396

原创 2015年百度之星程序设计大赛 - 初赛(1) 【题解】

1001.超级赛亚ACMer Accepts: 867 Submissions: 5329 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description百小度是一个ACMer,也是一个超级赛亚人,每个ACMer都有一个战斗力,包括百小度。
所谓超级赛

2015-06-01 19:13:35 3428

原创 【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 1210 1

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

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

2015-05-29 12:55:06 1862

原创 【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 1261

原创 【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 1138

原创 【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 2998 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 2982

原创 【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 1368

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

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

2015-05-13 16:33:54 1331

原创 【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 1171

原创 【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 1189

并查集分类1

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

2014-03-14

空空如也

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

TA关注的人

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