数学
文章平均质量分 52
大蒟蒻syk
这个作者很懒,什么都没留下…
展开
-
[UVA10288] Coupons && 数学期望
本以为是个水题结果输出格式暗含巨坑 说不出话来第一次不重复的概率是1 第二次不买重概率 n-1 / n 以此类推#include#include#include#includeusing namespace std;typedef long long LL;inline LL gcd(LL a, LL b){ while(b) { LL r = a % b; a原创 2014-12-26 22:34:45 · 410 阅读 · 0 评论 -
[BZOJ2876][Noi2012]骑行川藏 && 二分+拉格朗日乘数
我智商不足 无法解释清楚这些东西大爷题解传送门:http://blog.csdn.net/popoqqq/article/details/42366599另一篇很不错的:http://www.cppblog.com/prime56/archive/2012/08/13/187087.aspx大概就是lambda和vi是单调的然后二分一下#include#include#incl原创 2015-06-03 11:20:58 · 1327 阅读 · 0 评论 -
[BZOJ3930] [CQOI2015]选数 && 递推
记f[i]为gcd恰好为K*i的选数方案数 那么对于每一个i 记L为 a/(K*i) 上取整 R为 b/(K*i) 那么他的方案数就为(R-L+1) ^ N - (R-L+1) 再减去f[a*i] (a = 1,2,3....)最后的f[1]即为答案 注意若a/K上取整 == 1 那么全部选K也是一种方案 需要+1#include#include#include#includ原创 2015-04-07 16:42:57 · 2130 阅读 · 0 评论 -
[BZOJ2115][Wc2011] Xor && dfs+高斯消元
首先我们用dfs确定一条1到n的路径 用d[i]表示1到i的xor值 这条路径上肯定会出现很多环 那我们就统计环的xor值这个时候我们可以发现 环的xor值等于d[u] ^ d[v] ^ w(u, v) 因为1到u和1到v路径重合的部分被异或了两遍直接去掉然后我们可以对环的xor值进行高斯消元的操作解出最大值注意 环有m-n+1个可能大于n#include#include#原创 2015-03-31 09:50:07 · 482 阅读 · 0 评论 -
[BZOJ2111][ZJOI2010]Perm 排列计数 && 数学
通过长时间的盯着看 我们可以看出这个序列的大小于关系类似于一个二叉堆 那么我们可以由此dp统计方案 转移方程 son[i] = son[id[i] = C(son[i]-1, son[i那么剩下的问题就是求组合数了 由于n的阶乘可能是p的倍数 那么我们的线性推逆元就会出现错误 所以我们需要用卢卡斯定理把组合数的n和k 映射到p的模系中 内容如下C(n, k) = C(n/p,原创 2015-03-31 09:40:29 · 454 阅读 · 0 评论 -
[BZOJ1485] [HNOI2009]有趣的数列 && 找规律 + 数学
通过打表找规律可以发现这玩意是个卡特兰数列 那么问题转化为求卡特兰数列第n项h(n)然后百度告诉我这玩意等于C(n*2, n) / (n+1) 那么问题就在于mod了 mod并不一定是一个质数 逆元并不一定存在 所以我们选择在计算过程中将组合数进行质因数分解 那么问题就在于 如何快速的进行组合数分解 我们可以在O(n)的时间内递推出每一个数的一个因子 那么我们在计算时记录每一个原创 2015-03-31 16:33:52 · 460 阅读 · 0 评论 -
[BZOJ1025][SCOI2009]游戏 && dp
本题可直接转化为lcm种类的数量那么可以把n以内质数找出来 可以发现 x1^a1 + x2^a2 + ... = n因此可以转化为背包模型#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int M原创 2015-03-31 08:31:39 · 422 阅读 · 0 评论 -
[UVA11605] Lights inside a 3d Grid && 数学期望
先求每盏灯被操作的概率p 那么就等于(x坐标被操作的概率)px * (y坐标概率)py * (z坐标概率)pz对于每一盏灯 设K次亮着概率d[i] 不亮概率f[i] 则 1 = d[i] + f[i]则d[i] = d[i-1] * (1-p) + f[i-1] * p = d[i-1] * (1-p) + (1-d[i-1]) * p = d[i-1] * (1 - 2*p) + p原创 2014-12-29 22:10:22 · 537 阅读 · 0 评论 -
[UVA11637] Garbage Remembering Exam && 概率
数学果然难得要死Orz统计无效单词相当繁琐 所以干脆统计有效的假设当前是第i个单词 那么在非环形序列中会有 max(i-k-1, 0) + max(n-i-k)个单词和它距离大于k 记为x在环形序列里 会有2 * k个位置与i相距 这里的选择有C(x, 2*k)种 单词分类全排列 有(n-2*k-1)! * (2*k)!种 这个单词在环形序列中的位置有n原创 2014-12-28 22:39:15 · 515 阅读 · 0 评论 -
[UVA11427] Expect the Expected && 数学期望
用d[i][j]表示玩了i盘 赢了j盘 不高高兴兴去睡觉的概率转移很好转移#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 100;int n, k, m, k原创 2014-12-27 09:54:06 · 334 阅读 · 0 评论 -
[UVA11021] Tribles && 概率
先假设一开始是一只麻球 d[i]是i天内死亡的概率d[i] = P0 * d[i-1]^0 + P1 * d[i-1] + P2 * d[i-2]^2 + ... + Pn-1 * d[i-1] ^ (n-1)#include#include#include#include#include#define SF scanf#define PF printfusing names原创 2014-12-27 09:51:03 · 431 阅读 · 0 评论 -
[UVA1639] Candy && 数学期望
因为p的n+1次方很小 所以全部进行对数处理来保持精度设最后一次盒子1有i颗糖 i的概率就为 p^(n+1) * (1-p)^(n-i) * C(2*n-i, n)#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long原创 2014-12-27 09:48:05 · 425 阅读 · 0 评论 -
[UVA11762] Race to 1 && 数学期望
用p(x)表示小于x的质数个数 g(x)表示x的质因数个数d[n] = 1 + d[n] * (1 - g(x) / p(x)) + sum{d[x/y] * 1 / p(x) | x % y == 0}#include#include#include#include#include#define SF scanf#define PF printfusing namespac原创 2014-12-27 10:58:38 · 387 阅读 · 0 评论 -
[UVA1636] Headshot && 概率
水题 统计0的个数和00的个数然后比较就行了= = 象征性的把代码放上来#include#include#includeusing namespace std;const int MAXN = 1000;char s[MAXN+10];int main(){ while(~scanf("%s", s)) { int cnt0, cnt00, cnt01; cnt0 =原创 2014-12-23 22:30:23 · 477 阅读 · 0 评论 -
[UVA11181] Probability|Given && 概率
dfs构造n个人r个人买东西的概率作为分母 每次构造成功时给选中的人加上对应的概率就可以了#include#include#include#define SF scanf#define PF printfusing namespace std;const int MAXN = 20;int n, r, Num[MAXN+10];double P[MAXN+10], A[MAXN原创 2014-12-23 22:33:02 · 450 阅读 · 0 评论 -
[UVA557] Burger && 概率
直接组合数无奈超时Orz 去网上看了个题解 好厉害Orz#include #include #define SF scanf#define PF printfusing namespace std;int n;const int MAXN = 100000;double d[MAXN+10];int main(){ // d[i] = C(n-2, (n-2) / 2)原创 2014-12-26 12:43:45 · 900 阅读 · 1 评论 -
[UVA12230] Crossing Rivers && 数学期望
水题....#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 10;int main(){ int n, D, p, L, v, kase = 0; while(~SF("%d%d", &n,原创 2014-12-26 22:31:59 · 466 阅读 · 0 评论 -
[BZOJ3240][Noi2013]矩阵游戏 && 快速幂
当我知道这题矩阵可以用费马小定理搞快速幂的时候 我眼泪都要落下来了QAQ首先求一发通项F[1][1]->F[2][1]的通项然后写成A+B的形式若a != 1 A = (a^(m-1))*c B = b*((a^(m-1))/(a-1)) * c + d若a == 1 A = c B = B * (m-1) * c +原创 2015-06-04 17:02:15 · 1361 阅读 · 0 评论