----组合数学----
算球?
在校学生
展开
-
51nod 1453 抽彩球(组合数)
能想到思路,全是讨论版的启发,讨论版就给出思路了,但是我只看懂了一半。后来在纸上画了画,想出了解法,就是讨论版的思路。。。 思路:“对于所有颜色为i 的球,他的最后一个球总是在编号比他大的球拿完之前拿完”这就说明1、2、3、、、n每种颜色都有球的位置是固定的,既然这样,就好说了,比如说现在1,2种球,每种球有三个,则球1的排列是1、1、1,最后肯定有一个球2,就再最后放一个2,即1,1,1,2,然原创 2017-10-03 19:26:21 · 280 阅读 · 0 评论 -
51nod 1228 序列求和
通过伯努利数求自然数幂和。第一次接触伯努利数,打表套模板。。 参考:http://blog.csdn.net/acdreamers/article/details/38929067#include <bits/stdc++.h>using namespace std;typedef long long LL;const LL MOD = 1000000007;const int MAXN原创 2017-07-24 10:59:12 · 347 阅读 · 0 评论 -
51nod 1161 Partial Sums
相关讨论里的没看懂,扯到矩阵就不会了,补线代。。。 参考:http://blog.csdn.net/qingshui23/article/details/52180926 http://blog.csdn.net/yitiaodacaidog/article/details/38071257 看着博客里的规律,自己画画,就出来规律了。可是真不知道怎么去找这规律。。。还要补数学。。 这个题还有原创 2017-06-13 19:45:36 · 406 阅读 · 0 评论 -
51nod 1806 wangyurzee的树(purfer,容斥原理)
又涨知识了,purfer序列计算生成树个数,purfer序列讲解:http://www.cnblogs.com/zhj5chengfeng/archive/2013/08/23/3278557.html 前几天看这个题,以为一定要满足m个限制条件,就直接套公式算起来了,错了。看题解,说是容斥原理,感觉很懵逼,满足m个条件直接算就行了,怎么容斥?今天再看才想起来,是满足1个,2个,3个…….m个条件原创 2017-06-01 19:55:18 · 425 阅读 · 0 评论 -
51nod 1627 瞬间移动
看蓝色那部分,可以看到是个杨辉三角,可以用杨辉三角做。我想是去掉第一行和第一列,这个题就和机器人走方格那个题基本一样了,解法也相同#include <iostream>#include <algorithm>using namespace std;typedef long long ll;ll n,m;const int mod = 1e9+7;ll extend_gcd(ll a, ll原创 2017-05-21 19:23:41 · 358 阅读 · 0 评论 -
51nod 1253 Kundu and Tree
容斥原理+并查集。。第一次见这样的题,涨姿势了,不看题解想不出。 看了题解后才发现很简单。 题解: http://blog.csdn.net/crybymyself/article/details/68062911 http://www.cnblogs.com/Stomach-ache/p/3931848.html一个讲的细,用dfs求的连通分量。 一个讲的粗略,用的并查集。。 思路:首原创 2017-06-05 22:20:17 · 338 阅读 · 0 评论 -
51nod 1556 计算(默慈金数)
这题要用到默慈金数,又涨知识了。 默慈金数:http://blog.csdn.net/acdreamers/article/details/41213667 题解:http://blog.csdn.net/qingshui23/article/details/52068031 在这里默慈金数是用来排除错误走法的。当时我没想明白为啥错误的走法是M[n-2],就在51nod问了一下,回答如下:原创 2017-05-31 15:12:05 · 458 阅读 · 0 评论 -
51nod 1799 二分答案
这题wa的我老心疼了,wa好几发后才发现二分的时候把比较的俩数写反位置了 思想不难,首先计算能使m在位置k有多少种排列方案,然后除以所有的排列方案,也就是n!,然后再乘n!,最终就是计算是m在位置k有多少中方案。如果要使二分能确定m在位置k,则二分的时候每次比较的mid位置的值要么比m大,要么比m小,mid的位置一共就那么几个,假设个数是cnt,计算出cnt后,先算出来这几个位置符合条件的方案的总原创 2017-05-31 14:41:45 · 542 阅读 · 0 评论 -
51nod 1678 lyk与gcd
容斥原理。看完题唯一的想法就是暴力 后边的相关讨论里讲解的很详细,代码也是看的讲解这个题目的那人的,花了我60点头盾呢。。。。 对于容斥原理,我也仅限于用纸笔计算离散数学课本后边那种数据量极小的题目,却不会用代码来算。。#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int M原创 2017-05-29 20:17:19 · 615 阅读 · 3 评论 -
51nod 1383 整数分解为2的幂
画画,找规律。。。 dp[n]表示n的划分方法。 当n为奇数的时候,dp[n]=dp[n-1],n-1每种分解后边都加上一个1就是了。 当n为偶数的时候,dp[n]=dp[n-1]+dp[n/2],n-1的每种分解都加一个1,这是一种情况,因为n是偶数,还有把1合并成2,把2合并成4的情况,这时候多出的这部分分解后的最小单位是2,分解个数最多的就是n/2个2,把这些数字全部都除以2,正好就是n原创 2017-05-17 12:35:11 · 375 阅读 · 0 评论 -
51nod 1024 矩阵中不重复的元素
数据量很小,直接暴力,,先取对数再暴力。#include <iostream>#include <set>#include <cmath>using namespace std;int main(){ set<double> sets; ios::sync_with_stdio(false); int m,n,a,b; cin >> m >> n >> a >原创 2017-05-16 20:58:47 · 296 阅读 · 0 评论 -
51nod 1118 机器人走方格 & 1119 机器人走方格 V2(排列组合)
机器人每次只能向右走或者向下走。假设机器人在一个5*5的格子内部,机器人在格子内移动,每次只能走一格子,从左上走到右下,这样机器人会向右移动4次,向下移动4次,这就是4个向右移动和4个向下移动的排列组合,一共移动了8次,移动的方案数就是C(8,4)。由于求组合数的时候数字太大,而且也要取模,所以求组合数取模的时候要用乘法逆元#include <iostream>#include <algorith原创 2017-05-12 13:46:11 · 692 阅读 · 0 评论 -
51nod 1031 骨牌覆盖
斐波那契数列,递推 f[n]为2*n的方格公多少种排法。第n个单位处,要么是却一个竖着放的骨牌,要么就是n和n-1处都空着,却两个横着放的骨牌,所以f[n]=f[n-1]+f[n-2]#include <cstdio>#include <cstring>int f[1010];const int mod = 1e9+7;int main(){ int n; f[1] = 1;原创 2017-05-15 19:50:43 · 214 阅读 · 0 评论 -
51nod 1639 绑鞋带
画几下就会发现有规律 有n根鞋带,不成环的概率就是(2*n-2)/(2*n-1)*(2*n-2-2)/(2*n-1-2)-(2*n-2-2-2)/(2*n-1-2-2)****1;#include <iostream>#include <algorithm>using namespace std;int main(){ int n; cin >> n; int cnt原创 2017-05-24 12:20:55 · 248 阅读 · 0 评论 -
Codeforces Round #362 (Div. 2) E. PLEASE
参考题解:http://blog.csdn.net/mintgreentz/article/details/51925525 http://blog.csdn.net/mintgreentz/article/details/51925525 思路:假设杯子交换k次后,钥匙在中间杯子的概率为f(i),要是在两边的概率都是g(i),则在左边的概率g(i)=在右边的概率g(i) = (1-f(i))/原创 2017-10-07 12:33:50 · 360 阅读 · 0 评论