hdu 2049】的更多相关文章

一开始听大佬讲巴什博弈,听成巴士博弈,后来知道了巴什博弈的大名,还知道了博弈不止一种.所谓博弈,就是一场心机的对抗. 好巴什,好巴什......(记得有一个广告语是这么来着) 切入正题: 巴什博弈,问题引入: 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜.假设你先取,你要怎样获胜呢? 首先,我们要找一个必赢的点,当然是剩下(m+1)个物品给对方,这样对方至少取一个,至多取m个,都取不完物品,而在他取完后,你可以获胜. 我们假设对手取k个,你只要取m…
不容易系列之(4)——考新郎 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2049 题目大意: 有N对新婚夫妇,其中所有的新娘站成一列,都盖上了红布.然后让新郎去找新娘,每个新郎只能找一个新娘,而且不能一个对一个.问其中M个新郎找错新娘的情况有多少种. 思考过程: 这其实就是一个错排问题+排列组合问题 首先要从N个新郎当中找出M个找错的.即C(N,M).其次是对这M组新人进行错排,为D(M).而且两者之间是乘法原则 错排和排列组合地推公式: 由于…
在本博AC代码中,求CNM用的是Anm/amm没用阶乘的形式,两者皆可 #include <stdio.h> int main(void) { long long a,b,larr[21]; int x,y,i,c,n,m; larr[1]=0;larr[2]=1;larr[3]=2; for(i=4; i<=20; i++) larr[i]=(larr[i-1]+larr[i-2])*(i-1); scanf("%d",&c); while(c--) { s…
Ps:WA了无限次...简直做到崩溃..高中学的知识都忘了....这道题就是跟2048差不多.. 从N个人里选M个人,有Cmn种选法,然后就是M的错排*Cnm 代码: #include "stdio.h" long long dp[20]; int main(){  int n,m,i,j,a; long long sum,x,y,z; dp[0]=0; dp[1]=1; for(i=2;i<20;i++) dp[i]=i*(dp[i-1]+dp[i-2]);    //m个错排…
问题: 使用double定义的数量和long数定义19-20出现分歧,原因不明.求大公社. 这个问题需要用long,否则,只是通过,这应该纠结了很久. 问题是乘以一个交错的思想相结合. 不easy系列之(4)--考新郎 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25941    Accepted Submission(s): 94…
当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推. 第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法: 第二步,放编号为k的元素,这时有两种情况⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有M(n-2)种方法:⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有M(n-1)种方法: 综上得到 M(n)=(n…
题目链接. Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的: 首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排; 然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个. 最后,揭开盖头,如果找错了对象就要当众跪搓衣板... 看来做新郎也不是容易的事情... 假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情…
不easy系列之(4)--考新郎 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25425    Accepted Submission(s): 9311 Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪暂时想出了有一个有意思的节目,叫做"考新郎",详细的…
题目 错排:  当n个编号元素放在n个编号位置,错排的方法数记着D(n) ⒈把第n个元素放在一个位置,比如位置k,一共有(n-1)种方法: ⒉放编号为k的元素,这时有两种情况: 1°把它放到位置n,那么,对于剩下的(n-1)个元素,由于第k个元素放到了位置n,剩下(n-2)个元素就有D(n-2)种方法: 2°第k个元素不把它放到位置n,这时,对于这(n-1)个元素,有D(n-1)种方法: 于是有:D(n) = (n-1) [D(n-2) + D(n-1)] D(4)=(1+2)·3=9 D(5)…
假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能. 和之前那道题一样,是错排,但是要乘上排列数. 选对的人有C(N,M)个组合,将它们排除掉,剩下的人就是错排了 #include<iostream> #include<cmath> #include<iomanip> using namespace std; long long fact(int n) { ; ) sum*=n--; return sum; } int main() { i…