zoukankan      html  css  js  c++  java
  • COJ 0560 4015划分数

    4015 划分数
    难度级别:B; 运行时间限制:1000ms; 运行空间限制:262144KB; 代码长度限制:2000000B
    试题描述
    有n个无区别的物品,将他们划分成不超过m组,求出划分方法数模1e9的余数
    输入
    输入共一行:为两个正整数n,m。
    输出
    输出共一行:为方案数。
    输入示例
    4 3
    输出示例
    4
    其他说明
    1<=m,n<=5000

    题解:余一法

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<queue>
     6 #include<cstring>
     7 #define PAU putchar(' ')
     8 #define ENT putchar('
    ')
     9 using namespace std;
    10 const int maxn=5000+10,mod=1e9;
    11 int d[maxn][maxn],n,m;
    12 inline int read(){
    13     int x=0,sig=1;char ch=getchar();
    14     while(!isdigit(ch)){if(ch=='-') sig=-1;ch=getchar();}
    15     while(isdigit(ch)) x=10*x+ch-'0',ch=getchar();
    16     return x*=sig;
    17 }
    18 inline void write(int x){
    19     if(x==0){putchar('0');return;}if(x<0) putchar('-'),x=-x;
    20     int len=0,buf[15];while(x) buf[len++]=x%10,x/=10;
    21     for(int i=len-1;i>=0;i--) putchar(buf[i]+'0');return;
    22 }
    23 void init(){
    24     n=read();m=read();
    25     d[0][0]=1;
    26     for(int i=1;i<=m;i++)
    27         for(int j=0;j<=n;j++)
    28             if(j>=i) d[i][j]=d[i-1][j]+d[i][j-i],d[i][j]%=mod;
    29             else d[i][j]=d[i-1][j];
    30     write(d[m][n]);
    31     return;
    32 }
    33 void work(){
    34     return;
    35 }
    36 void print(){
    37     return;
    38 }
    39 int main(){
    40     init();work();print();return 0;
    41 }
  • 相关阅读:
    十五。JAVA方法的分类
    八。java数组
    十三。第三章实例
    十二。工具类中算法的实现
    九。求JAVA最大,最小,平均值
    十四。JAVA类的认识
    十一。查找
    Listview中使用线程实现无限加载更多项目的功能
    PL/SQL Developer的常用技巧
    android异步加载图片
  • 原文地址:https://www.cnblogs.com/chxer/p/4628461.html
Copyright © 2011-2022 走看看