• 每日算法之递推排序(P1866 编号)


      兔子也是数字控;每个兔子都有自己喜欢的数字区间,找出能让所有兔子都满意的组合。

      将所有兔子喜欢的序号按从小到大排序,此时如果小序号的兔子选择了一个数字,则之后的兔子只要排除排在它之前的兔子数(由于已经排过序,减去前面兔子选择的次数就是本兔兔可以做出的选择数,如果为零则意味着没有选择直接输出0)。这样将所有兔子可做的选择数相乘即可得到结果。

      注意因为数字过大,取模1e9+7,如果用int(数值范围2147483648)已经超出了,此时数值范围必须要比该模数的平方大,long long(9223372036854775808,即9.223e18)即可满足该要求,所以要注意提升结果精度。

     1 //P1866 编号
     2 #include<iostream>
     3 #include<algorithm>
     4 using namespace std;
     5 const int MAX=1001;
     6 int Rabbit[MAX];
     7 
     8 int main()
     9 {
    10     long long n,sum=1;
    11     cin>>n;
    12     for(int i=0;i<n;i++)
    13     {
    14         cin>>Rabbit[i];
    15     }
    16     sort(Rabbit,Rabbit+n);
    17     for(int i=0;i<n;i++)
    18     {
    19         if(Rabbit[i]<=i)   
    20         {   
    21             cout<<0<<endl;
    22             return 0;
    23         }
    24         else    sum=(sum*(Rabbit[i]-i))%1000000007;      //排序后后者便可以在排除前者已有号码的情况下再进行选择排序,减去的序号数为排前面的兔子总数
    25     }
    26 
    27     cout<<sum<<endl;
    28     return 0;
    29 }
  • 相关阅读:
    如何“破解”系统分析员考试
    两道简单的入门题
    WPF调用OCX控件
    www.12306.cn是安抚群众心灵的吧?
    FileStream类操作字节和字节数组
    XML基本操作:创建增删改
    asp.net ajax回调函数
    XMLHttpRequest+WebForm模式(接口IHttpHandler)实现ajax
    文件读写操作
    asp.net 中AJAX回调模式(ICallbackEventHandler)
  • 原文地址:https://www.cnblogs.com/tobybain/p/10640202.html
Copyright © 2020-2023  润新知