zoukankan      html  css  js  c++  java
  • HDU 2200 Eddy's AC难题

    Eddy's AC难题

      Eddy是个ACMer,他不仅喜欢做ACM题,而且对于Ranklist中每个人的ac数量也有一定的研究,他在无聊时经常在纸上把Ranklist上每个人的ac题目的数量摘录下来,然后从中选择一部分人(或者全部)按照ac的数量分成两组进行比较,他想使第一组中的最小ac数大于第二组中的最大ac数,但是这样的情况会有很多,聪明的你知道这样的情况有多少种吗? 

      特别说明:为了问题的简化,我们这里假设摘录下的人数为n人,而且每个人ac的数量不会相等,最后结果在64位整数范围内. 

    Input

      输入包含多组数据,每组包含一个整数n,表示从Ranklist上摘录的总人数。 
    Output

      对于每个实例,输出符合要求的总的方案数,每个输出占一行。 
    Sample Input

    2
    4

    Sample Output

    1
    17

    解题思路:
      本题有多组测试,给出一个整数n为从Rank上摘录的人数,将摘录的人分为两组,其中一组的所有人的AC数大于另一组,保证每个人的AC数都不一致。

      选出了n人,但是在分组时不一定将所有人都分组,所以我们m从2 ~ n选择分组人数,选择的种数可以用组合数计算得到,将选出的所有人按AC数量排序,若将一组个数为m有序数拆分为两组,使其中一组的所有值大于另一组,可以在每两个数中间进行拆分这样便是求间隔的个数即为n-1。

    排列组合相关运算

    样例分析:

    2:

    挑出2个数有2! / ((2 - 2)! * 2!) = 2 / (1 * 2) = 1

    2个数分为两组有1种情况,答案 = 1 * 1 = 1

    4:

    挑出2个数有 4! / ((4 - 2)! * 2!) = 6

    2个数分为两组有1种情况 挑出2个数时所有分组情况为6 * 1 = 6;

    挑出3个数有 4! / ((4 - 3)! * 3! = 4

    3个数分为两组有3 - 1 = 2种情况 挑出3个数时所有分组情况为4 * 2 = 8

    挑出4个数有 4! / ((4 - 4)! * 4!) = 1

    4个数分为两组有4 - 1 = 3种情况 挑出4个数时所有分组情况为1 * 3 = 3

    答案 = 6 + 8 + 3 = 17

    AC代码

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long LL;
     4 LL clt(int n){
     5     LL ans = 0; //初始化答案为0
     6     for(int i = 2; i <= n; i++){    //从2个到n个挑出数字
     7         LL temp = 1;
     8         for(int j = 1; j <= i; j++){    //计算组合数
     9             temp = temp * (n - j + 1) / j;
    10         }
    11         ans += temp * (i - 1);  //计算答案
    12     }
    13     return ans;
    14 }
    15 int main()
    16 {
    17     int n;
    18     while(scanf("%d", &n) != EOF){  //输入摘录人数
    19         if(n < 2){ //人数小于2无法分为两组输出0
    20             printf("0
    ");  
    21             continue;
    22         }
    23         LL ans = clt(n);    //人数大于2计算答案
    24         printf("%lld
    ", ans);
    25     }
    26     return 0;
    27 }
  • 相关阅读:
    支付方法及注意事项
    网站负载均衡策略
    工作成长
    java内存机制
    关于前途的一些思考
    git记录
    关于博客
    如何为公司创造价值?
    遍历集合方法总结
    二叉树和红黑二叉树
  • 原文地址:https://www.cnblogs.com/suvvm/p/10007415.html
Copyright © 2011-2022 走看看