数学:组合学
文章平均质量分 90
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #404 (Div. 2) D. Anton and School - 2 前缀的后缀、 范德蒙恒等式、容斥
题意:给出一个只有"("和“)"的字符串,为有多少个子序列,它的长度为len,则左边len/2个字符为”("右边len/2个字符为")",问这样的子序列有多少个。 前缀的后缀、 范德蒙恒等式、容斥 子串为 前缀的后缀,这里是子序列,所以s[i]为必取,作为序列的最后一个元素,然后前面的"("为选取, 所以可以预处理出suml和sumr,分表表示i的左边有多少个"(", i的右边有多少个")". 然后对于每个“(",必选这一个"(",然后i之前的(进行排列组合,选j个"(",就在sumr[i+1]里选j个")原创 2017-03-16 01:44:40 · 1553 阅读 · 0 评论 -
Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) C. Felicity is Coming!组合学+集合
题意:给出n组数,每组gi个数,每个数属于1~m,每个数可以变化但变化前相同的数变化后依然相同,变化前不同的速变化后依然不同,且可能不变,但经过变化后每组的每种数的个数不会变化,求变化的总方案数。 组合学+集合 //这题是根据Codeforces的官方题解写的 把1~m分成一些集合,在同一个集合里的数在各个gi里它们的个数都是相等的,比如一个集合里有x、y,则xy在所有gi里的个数是相等的,但x在2个不同的集合里的个数可能不同,但x的个数必然等于y的个数。而方案数就是这些集合元素的个数的阶乘的积。 把这些数原创 2017-01-14 01:28:50 · 947 阅读 · 0 评论 -
Codeforces Round #369 (Div. 2) D. Directed Roads 图论、组合学、二重dfs、并查集形式的图、Interesting、好题
图论、组合学、 二重dfs、并查集形式的图、Interesting、好题 可以把图分成两部分, 另一部分是链状的 方案数是 2^k次(k条边), 一部分是很多的环((C m, 1) + (C m, 2) + (C m, 3) + ...... + (C m, m - 1) == 2^m - 1 - (C m, m) == 2^m - 2) 并查集形式的图, 一个节点自由一个父节点, 可能有环 father[ i ] = ai; 每个i, dfs, 访问到这个i访问过的节点是, 说明 有环, 然后进行 ind原创 2016-09-06 19:06:06 · 798 阅读 · 0 评论 -
Codeforces Round #340 (Div. 2) B. Chocolate 组合学、简单题
0 1 0 1 0 1 0 从左向右遍历, 遇到第一个1后开始算(ans = 1), 然后连续的cnt个0 碰到隔断连续0的1的时候 ans *= cnt, cnt = 0, 然后继续访问 这样就把左端的连续0和右端的连续0去掉了 2 发 Wrong answer on test 7 尴尬 最开始的时候只包括了 0 1 0 1 0, 1 0 1, 1 1 1 1 1 1这些情况, 但漏了0 0 0 0 0 0, 所以初始化为 ans = 0; // 最开始的时候是初始化为 1 的 复杂度 O(n)原创 2016-09-01 01:02:21 · 644 阅读 · 0 评论 -
Gym 100952D Time to go back 组合学、杨辉三角预处理组合数
组合学 有 n 个礼物, m个朋友, 其中k 个很要好的朋友, 要买 price 大于 d 的礼物 领 price >= d 的礼物个数为 cnt 则如果用 C[cnt][k] * C[n - k][m - k] 则显然不对, 因为这里面前面选的 price >= d的, 后面给普通好朋友选礼物的时候也会选到, 这样总的买的礼物数来说有大量重复了 所以 应该是分步 分类(price >= d 的与 < d 的分开算, 这样就不会相同的礼物选2次了) 首先 C[cnt][k] * C[n原创 2016-08-10 01:16:49 · 1861 阅读 · 2 评论 -
URAL 2029 Towers of Hanoi Strike Back 汉诺塔,从初始状态到任意给出状态需要的次数
汉诺塔, 得到从初始状态到任意给出状态需要的次数的O(n)算法, 记结论吧☺☺ 比如要得到 BCCBABC 则对于原始的AAAAAAA 第一次令 res = ‘A', 然后对于给出的state从大的往小的开始扫, 当前是C所以第7个A变成C, ans += 2^(7 - 1), 然后res = 'B', 也就是剩余的移到B上, 然后第二个需要到B上,且已经在B上, 所以不用管, 继续访问下一位 然后是A, 这个时候把当期大小的盘在B上, 所以移到A上, ans += 2^(5 - 1), 然后res = ’原创 2016-07-31 01:17:56 · 1579 阅读 · 1 评论 -
2016 UESTC Training for Math A - 谭爷的黑暗沙拉 组合学
排列组合中的隔板法 常用来求 x1 + x2 + ...... + xn = k的非负解的个数, 每个盒子里 -1 +1 转化为每个盒子里有 -1 个球, 然后对于 k + n 个球插入 n - 1 个隔板 即 y1 + y2 + ...... yn = k + n; C(k + n - 1, n - 1) 然后主意 k, n <= 25 ,乱做即使 long long 也会溢出 故在中间过程就要把A(n - 1, n - 1)约掉 最开始先约大的,这样显然不行(WA9), 大的不容易约去, 可能还没原创 2016-07-09 01:14:49 · 706 阅读 · 0 评论 -
UVALive 5971 Permutation Counting 组合学、递推
反正枚举全排列必定TLE的, 然后排列组合里面其实递推挺多的, 也可以搞出前几项, 然后去 数列网站上查一下 这里的递推式是 dp[i] = dp[i - 1] * (i - 1) + dp[i - 2] * (i - 2) 这里dp[i] 表示 n == i 时合法的排列数 1)对于 dp[i - 1] * (i - 1) 则是对于 n == i - 1的合法排列, 可以在 (i - 1)个地方把第i个数插进去就好了, 总共 (i - 1 + 1) - 1个位置; 2)对于dp[i - 2] * (i -原创 2016-07-22 22:57:14 · 1305 阅读 · 0 评论 -
Codeforces Round #345 (Div. 2) C. Watchmen __ map , sorting and combinatorics
Watchmen are in a danger and Doctor Manhattan together with his friend Daniel Dreiberg should warn them as soon as possible. There are n watchmen on a plane, the i-th watchman is located at point (xi, yi). They need to arrange a plan, but there are some di原创 2016-04-08 21:35:07 · 1407 阅读 · 0 评论