poj1942 Paths on a Grid 【排列组合】

关于这个题想说一下,刚开始准备按照有一个含有n个数的非递减序列,每个数最大值为m,数字可以重复,有多少种这样的序列,像是一个蛮复杂的排列组合

其实这道题,从left bottom到right up只能向右或者向上,也就是m+n个格子里面取m个格子写右,n个格子写上,就成了个很2的排列组合问题

值得强调的是,这个题求组合数是用分数相乘来求的,怕double丢精度可以末尾+0.5然后转化为longlong来进行四舍五入

这个题int好像过不了

说个蛮逗比的。。。最近不是写了个交题的脚本么,本来是一水题,然后狂交了几次都TLE,看了看自己思路和题解是差不多的,把题解po过去,也是TLE,后来才发现,,没改题号。。。回到脚本文件改下题号就OK了。。。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{
	#ifndef ONLINE_JUDGE
    	//freopen("/home/test/in.txt","r",stdin);
    	//freopen("/home/test/list.txt","w",stdout);
    #endif
    long long m,n;
    while(scanf("%lld%lld",&m,&n)!=EOF)
    {
    	if(!m&&!n)
    		break;
		long long sum=m+n;
		double res=1;
		for(long long i=min(m,n);i>=1;i--)
		{
			res*=sum--/(i*1.0);
		}
		/*long long res=com(sum,min(m,n));*/
		printf("%lld\n",(long long)(res+0.5));
    }
	return 0;
}

poj1942 Paths on a Grid 【排列组合】,布布扣,bubuko.com

时间: 2024-10-05 21:19:24

poj1942 Paths on a Grid 【排列组合】的相关文章

[Codeforces 1228E]Another Filling the Grid (排列组合+容斥原理)

[Codeforces 1228E]Another Filling the Grid (排列组合+容斥原理) 题面 一个\(n \times n\)的格子,每个格子里可以填\([1,k]\)内的整数.要保证每行每列的格子上的数最小值为1,有多少种方案 \(n \leq 250,k \leq 10^9\) 分析 这题有\(O(n^3)\)的dp做法,但个人感觉不如\(O(n^2 \log n)\)直接用数学方法求更好理解. 考虑容斥原理,枚举有\(i\)行最小值>1,有\(j\)行最小值>1,那

poj1942(Paths on a Grid)

题目地址:Paths on a Grid 题目大意: 给你一个矩形的格子,让你从左下角走到右上角,每次移动只能向上或者向右,问你有多少种可能的路径. 解题思路: 水题,排列组合.推出公式C(m+n,较小的那个数) 代码: 1 #include <algorithm> 2 #include <iostream> 3 #include <sstream> 4 #include <cstdlib> 5 #include <cstring> 6 #inc

POJ1942——Paths on a Grid(组合数学)

Paths on a Grid DescriptionImagine you are attending your math lesson at school. Once again, you are bored because your teacher tells things that you already mastered years ago (this time he's explaining that (a+b)2=a2+2ab+b2). So you decide to waste

[ACM] POJ 1942 Paths on a Grid (组合)

Paths on a Grid Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 21297   Accepted: 5212 Description Imagine you are attending your math lesson at school. Once again, you are bored because your teacher tells things that you already mastere

Paths on a Grid POJ 1942 (组合数学 || 暴力)

Imagine you are attending your math lesson at school. Once again, you are bored because your teacher tells things that you already mastered years ago (this time he's explaining that (a+b) 2=a 2+2ab+b 2). So you decide to waste your time with drawing

codeforce 128C Games with Rectangle 排列组合

Games with Rectangle Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Description In this task Anna and Maria play the following game. Initially they have a checkered piece of paper with a painted n?×?m rect

HDU--5396(区间dp+排列组合)

做这道题的时候,想到会不会是dp,然后发现dp可做,但是一直被自己坑到死. 枚举最后合并的那个位置,然后对于加减号的,分成的前后两个部分都有不同的组合方法, (a1+a2........) +  (b1,b2.............)         对于每个a,被加b的个数的阶乘次 ,对于每个b,被加a的个数的阶乘次 减法同理 乘法特殊一点 (a1+a2........) *  (b1,b2.............)  乘法分配率,直接将两部分的总和相乘即可 想到这些还远远没有结束,因为最

排列组合

(常考)错位排列 有N封信和N个信封,每封信都不装在自己信封里的排列种数记作Dn,则 D1=0,D2=1,D3=2,D4=9,D5=44,D6=265 一.相邻问题---捆绑法 不邻问题---插空法 对于某几个元素不相邻的排列问题,可先将其他元素排好,再将不相邻元素在已排好的元素之间及两端空隙中插入即可. [例题1]一张节目表上原有3个节目,如果保持这3个节目的相对顺序不变,再添进去2个新节目,有多少种安排方法? A.20 B.12 C.6 D.4 [答案]A. [解析] 以下内容需要回复才能看

hdu 1799 (循环多少次?)(排列组合公式)

循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3051    Accepted Submission(s): 1117 Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次OP运算