- 博客(5)
- 收藏
- 关注
原创 总结:Lucas定理
证明并不会 公式: CyxC_{x}^{y} mod p=CymodpxmodpC_{x mod p }^{y mod p}*Lucasy/px/pLucas_{x/p}^{y/p}当然答案是要递归得出的。限制条件:1.因为求组合数是用暴力方法求的,所以p不能太大 2.组合数记得mod,用逆元来解决 3.要判断一些特殊情况,防止RE,如:Lucasy/px/pLucas_{x/p}^{y/p}中
2017-11-08 21:20:36 248
原创 51Nod 1055 最长等差数列
题目描述:懒得截图**题解:要注意一个条件,“找出由这些数组成的最长的等差数列”,说明这些数不一定要按顺序组成等差数列。那么我们就可以肆无忌惮的排序了。排好序以后就要考虑dp了。f[i][j]表示等差数列的第一项是a[i],第二项是a[j]的最长长度(不看别人题解真的想不到)。那么f[i][j]的转移是f[k][i] (当a[k],a[i],a[j]为等差数列时),dp的转移方式比较神,具体看代码:
2017-11-04 16:29:51 270
原创 51Nod - 1398 等公交
题解这题是比较基础的概率DP题。定义f[i]表示第i个时刻的所有的情况的概率和。f[i]由∑f[i−time[j]]\sum f[i-time[j]]来转移就好了。最后枚举一下在他上车之前的最后一辆车是那一辆*他等的时间就好了。 代码如下:#include<cstdio>#include<string>using namespace std;const int maxn=105,maxt=1
2017-11-04 15:57:49 293
原创 51Nod - 1833 环
题目描述题解这题看似非常不可做,但是其实我们可以转换一下,形成不相交的简单环其实就是二分图的一个完美匹配。知道了这一点我们就可以直接写一个状压dp(因为n比较小)。定义f[i][j]表示前i个数,匹配的状态为j的方案数,则转移就比较简单了。然后就莫名其妙卡过去了! 代码如下:#include<cstdio>#include<string>using namespace std;const i
2017-11-04 15:43:57 948 1
原创 Lougu - P3203 BZOJ-2002 [HNOI2010]BOUNCE 弹飞绵羊
题面:题目描述某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,L
2017-11-04 13:25:57 253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人