上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 25 下一页

bzoj 2749 杂题

摘要: 我们可以发现,phi(x)与x相比,相当于x的每个质因子-1后再分解质因数,添加到现有的质因子中,比如质因子13相当于将13变成12,然后分解成2*2*3,再将2的质数+2,3的指数+1,除了质因子2之外的所有质因子都满足这一性质,每次有一个质因子2相当于变成1,也就是没有了。那么我们可以将问题转化成一个大数,每个质因子分解到最后会分成多少个2,比如刚才的13,变成2*2*3,然后3变成2,那么13求phi到最后就是3个2,也就是消掉一个13需要求3次phi,如果我们可以处理出每个质数最后分解成多少个2,就可以解决问题。 求分解多少个2可以线性筛的时候处理,设w[i]代表i这个数分解成多... 阅读全文
posted @ 2014-01-10 18:07 BLADEVIL 阅读(294) 评论(0) 推荐(0) 编辑

bzoj 2748 DP

摘要: 比较裸的背包,w[i][j]代表到第I个操作的时候音量j能不能达到,然后转移就行了。 /************************************************************** Problem: 2748 User: BLADEVIL Language: Pascal Result: Accepted Time:12 ms Memory:284 kb****************************************************************/ //By BLADEVILvar ... 阅读全文
posted @ 2014-01-10 16:53 BLADEVIL 阅读(211) 评论(0) 推荐(0) 编辑

bzoj 3190 维护栈

摘要: 我们可以将每一辆赛车看成一条直线,斜率为速度,纵截距为初始位置,那么问题就转化为求这n条直线处于最上面的直线。最上面是指在坐标系中,假设从x轴向下看,能看到的直线,只露一个点也算能看见。那么就类似水平可见直线这道题了。先按照斜率排序,然后维护直线的栈就行了。 /**************************************************************Problem: 3190User: BLADEVILLanguage: PascalResult: AcceptedTime:84 msMemory:548 kb**********************... 阅读全文
posted @ 2014-01-10 16:36 BLADEVIL 阅读(346) 评论(0) 推荐(0) 编辑

动态最小生成树讲解

摘要: 动态最小生成树是一类要求给定图,对于图的边有删除,插入,修改边权操作,满足查询MST(Minimum Spanning Tree)的问题。 在这里我们考虑修改边的操作,删除可以看成是将边权设成INF,插入可以看做是将一条INF的边边权赋值。 那么假设我们有q个询问,每个询问修改一条边的权值。 对于q个询问里修改的边,我们设这个边集为Q,全集为E,那么对于E-Q中的边,做一遍MST,MST中的边集设为G,那么对于E-Q-G中的边,不论询问怎么改变,这些边都不会在MST中,所以我们可以删除这些边,这时全集E不包括刚才删除的边,全集中的边的数量变成了n+q,n为MST中必要的边,q为询问中... 阅读全文
posted @ 2014-01-09 18:28 BLADEVIL 阅读(3883) 评论(0) 推荐(2) 编辑

bzoj 1303 杂题

摘要: 首先如果一个数是中位数,在这段区间中比他大的数量=比他小的数量,那么如果一个数比他大设为1,比他小设为-1,设要求的数在数组中的位置是mid,那么我们可以用num[i] 表示1-mid这一段中,j-mid的和为i的j的数量。那么我们扫mid到n,假设mid到j的和为a,那么代表这段比他大的有a个,因为要保证数量相等,所以要在num数组里-a的个数累加答案。/**************************************************************Problem: 1303User: BLADEVILLanguage: PascalResult: Accep.. 阅读全文
posted @ 2014-01-09 11:47 BLADEVIL 阅读(176) 评论(0) 推荐(0) 编辑

bzoj 1047 单调队列

摘要: 首先将每一列压成一行,ans[i,j]代表[i,j]位及以上共n位的最大值,这个可以每一列用单调队列处理,然后对于每一行,类似于上述的处理,这样就可以得出以[i,j]为右下角的边长为n的矩阵的最大值。然后将所有值取相反数,再求一遍最大值,再取相反数,这样就可以得出最小值,然后扫一遍合法的点更新答案。/**************************************************************Problem: 1047User: BLADEVILLanguage: PascalResult: AcceptedTime:4192 msMemory:24184 kb* 阅读全文
posted @ 2014-01-09 10:08 BLADEVIL 阅读(317) 评论(0) 推荐(0) 编辑

bzoj 2668 费用流

摘要: 我们可以把初始状态转化为目标状态这一约束转化为将黑子移动到目标状态所需要的最少步数。 除了初始点和目标点之外,剩下的点如果被经过那么就会被交换两次,所以我们将一个点拆成3个点,a,b,c,新建附加源点source汇点sink。设每个点的交换次数为num[i],那么这个点的交换次数如果是奇数其实是没用的,那么我们连接(a,b,num[i] div 2,0),(b,c,num[i] div 2,0),这样代表这个点一共可以被经过num[i] div 2次,那么对于起始点和终点来说,因为不用被经过,所以原来是奇数的话可以走num[i] div 2+1次,所以(a,b,(num[i]+1) di... 阅读全文
posted @ 2014-01-09 08:18 BLADEVIL 阅读(351) 评论(0) 推荐(0) 编辑

组合数求法讲解

摘要: 首先对于c(n,m),如果n,m比较大的话,这个值会很大,为了简化变成复杂度,也是为了更好的求解,都要求求c(n,m) mod p的值,我们由最简单的问题慢慢提高难度。 要求求解c(n,m) mod p,p为质数,且n,m1 then begin inc(tot); pj[tot]:=p; c[tot]:=1; end; for i:=1 to tot do begin pi[i]:=1; for j:=1 to c[i] do pi[i]:=pi[i]*pj[i]; end;end; f... 阅读全文
posted @ 2014-01-08 18:59 BLADEVIL 阅读(580) 评论(0) 推荐(1) 编辑

mobius反演讲解

摘要: mobius反演的基本形式为,假设知道函数F(x)=Σf(d) d|x,那么我们可以推出f(x)=Σmiu(d)*F(x/d) d|x,另一基本形式为假设知道函数F(x)=Σf(d) x|d,那么我们可以推出f(x)=Σmiu(d)*F(d/x) x|d,第二种形式可以由容斥定理得出,在此不再赘述。 我们由一个例子来了解mobius反演的作用。 求解ans=Σ(050000 then break; mindiv[i*prime[j]]:=prime[j]; if i mod prime[j]=0 then begin ... 阅读全文
posted @ 2014-01-08 18:13 BLADEVIL 阅读(827) 评论(0) 推荐(1) 编辑

01分数规划讲解

摘要: 分数规划是将某个求解最优性问题转化为判定性问题,一般的形式为f(x)=a(x)/b=(x),求解f(x)的最优值,其中a,b,x为连续实数函数。 我们这里讨论f的最小值,即设w=min(f(x)=a(x)/b(x)),那么w=f(xmin)=a(xmin)/b(xmin)=>a(xmin)-w*b(xmin)=0 那么我们设一个新的函数g(w),g(w)=min(a(x)-w*b(x)),首先我们可以得到这个函数的一些性质。性质: 单减性:即对于任意w1g(w2),证明比较容易,假设x1为w1的最优解,x2为w2的最优解,那么有 g(w1)=a(x1)-w1*b(x1)>a(x.. 阅读全文
posted @ 2014-01-08 17:05 BLADEVIL 阅读(893) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 25 下一页