zoukankan      html  css  js  c++  java
  • hdu 2200

    题目

    从n个人中选全部或部分人,然后将这些人分成两部分,要求其中一部分的最小值大于另一部分的最大值
    假设n个人的ac数量按从小到大排列,可以从中任选m个人(n=>m>=2),
    再把这m个人分2组(每个人都要分组),要是满足最小ac数大于最大ac数,只需要在m
    个人中插板即可。
    例如:
    m个人假如分别为 :
    1,2,3,4,......m-1,m (m个人的ac数从小到大排列)
    只需在任意位置插板就可分为符合要求的2组:
    1,2,3......t, || t+1...m-1,m (1<=t<m)
    则 1,2,3......t 为一组
    t+1,t+2,......m-1,m 为一组

    #include<stdio.h>
    long long fun(int m,int n)//求组合数
    {
    	long long sum=1;
    	for(int i=1;i<=m;i++)
    		sum=sum*(n-i+1)/i;
    	return sum;
    }
    int main()
    {
    	int n;
    	long long  ans =0;
    	while(~scanf("%d",&n))
    	{
    		ans =0;
    		for(int i=2;i<=n;i++){
    			ans+=(i-1)*fun(i,n);//c(m,n);
    		}
    		printf("%lld
    ",ans);
    	}
    	return 0;
    }
    


  • 相关阅读:
    fmt命令
    wc命令
    grep命令
    head命令
    C/C++语法知识:typedef struct 用法详解
    邻接表无向图的介绍
    邻接矩阵无向图的介绍
    图的基本概念
    careercup-栈与队列 3.6
    careercup-栈与队列 3.5
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160258.html
Copyright © 2011-2022 走看看