zoukankan      html  css  js  c++  java
  • 2012 Multi-University Training Contest 8

    HDU4379

     1 #include<iostream>
     2 #include<string.h>
     3 #include<stdio.h>
     4 #define INF 3000000000
     5 #define LL long long
     6 using namespace std;
     7 
     8 int main(){
     9     LL n,A,B,l,mod,num,a;
    10     LL max1,min,M;
    11     while(~scanf("%I64d%I64d%I64d%I64d%I64d",&n,&l,&A,&B,&mod)){
    12         max1=-1,num=0;min=INF;M=l/2;
    13         for(LL i=1;i<=n;i++){
    14             if (i==1) a=(A+B)%mod;else a=(a+A)%mod;
    15             if (a<=M){
    16                 if (a>max1) max1=a;
    17                 num++;
    18             }
    19             else{
    20                if (a<min) min=a;
    21             }
    22         }
    23         if (max1+min<=l) num++;
    24         printf("%I64d
    ",num);
    25     }
    26     return 0;
    27 
    28 }
    View Code

     HDU4372

     1 /*HDU 4372 组合数学
     2 第一类stirling数+排列
     3 题意:有n栋高楼,高度属于[1,n]区间,且各不相同,排成一排后,
     4 从左边看,有L个,右边看,看到R个(高楼会把矮楼挡住),
     5 问,在满足这个条件时,可能有多少的不同排列方式?
     6 */
     7 /*我们能知道最高的楼一定能看见,这样左边能看见L-1个,右边能看到R-1个,
     8 因为数字各不相同,这样,等于把n-1个不同的数字分成L-1+R-1组,每组中的最高的放在最左边(右边),剩下几个被挡住的,有(k-1)!种排列方式。
     9 第一类stirling数的定义:
    10 把n个元素集合分作k个环排列的方法
    11 我们把这个定义转化一下:
    12 环排列:每两个元素的相对位置是一定的,但是环是能够旋转的,对于一个i环,环排列数是i!/i,正好符合这道题目的
    13 分好k组后,左边放置L-1组,最大的要从小到大排列
    14 所以,最终答案是 S[N-1][L-1+R-1]*C[L-1][L-1+R-1]
    15 */
    16 #include <iostream>
    17 #include <string.h>
    18 #include <stdio.h>
    19 #include <stdlib.h>
    20 #define maxn 2000+5
    21 #define mod 1000000007
    22 #define LL long long
    23 using namespace std;
    24 LL C[maxn][maxn];
    25 LL S[maxn][maxn];
    26 
    27 void init(){
    28 //    memset(S,0,sizeof(S));
    29     for(LL i=0;i<maxn;i++) {S[i][0]=0;S[i][i]=1;}
    30     for(LL i=1;i<maxn;i++){
    31         for(LL j=1;j<=i;j++){
    32             S[i][j]=(S[i-1][j-1]+(i-1)*S[i-1][j])%mod;
    33         }
    34     }
    35     memset(C,0,sizeof(C));
    36     C[0][0]=1;
    37     for(LL i=1;i<maxn;i++){
    38         C[i][0]=1;C[i][i]=1;
    39         for(LL j=1;j<maxn;j++)
    40         C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
    41     }
    42 }
    43 //最终答案是 S[N-1][L-1+R-1]*C[L-1][L-1+R-1]
    44 LL t,N,L,R;
    45 int main(){
    46     init();
    47     cin>>t;
    48     while(t--){
    49         cin>>N>>L>>R;
    50         LL ans=(S[N-1][L-1+R-1]*C[L-1+R-1][L-1])%mod;
    51         cout<<ans<<endl;
    52     }
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    Struts2拦截器
    struts2介绍
    java读写文件大全
    Intent的详细解析以及用法
    sigmoid和softmax的应用意义区别
    C 实现 创建多个txt文件,并以自然数列命名,然后将产生的十进制数据写入txt文档
    k-means原理和python代码实现
    非极大值抑制 NMS
    JetSonNano darknet yolov3工程通过CMakeLists.txt配置编译环境
    C文件 CMakeList.txt编译器配置错误的问题 error:invalid conversion from 'int' to 'LAYER_TYPE' [-fpermissive]....
  • 原文地址:https://www.cnblogs.com/little-w/p/3602512.html
Copyright © 2011-2022 走看看