zoukankan      html  css  js  c++  java
  • BZOJ2425 [HAOI2010]计数

    比较简单的数位dp,但是要用到组合公式C,预处理吧。。。

     1 /**************************************************************
     2     Problem: 2425
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:0 ms
     7     Memory:828 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <algorithm>
    12 #include <cstring>
    13   
    14 using namespace std;
    15 typedef long long ll;
    16 const int N = 55;
    17 ll ans, c[N][N];
    18 int num[10];
    19 char s[N];
    20 int n;
    21   
    22 ll calc(int x){
    23     ll res = 1;
    24     for (int i = 0; i <= 9; ++i)
    25         res *= c[x][num[i]], x -= num[i];
    26     return res;
    27 }
    28   
    29 int main(){
    30     scanf("%s", s + 1);
    31     n = strlen(s + 1);
    32     c[0][0] = 1;
    33     for (int i = 0; i <= n; ++i)
    34         for (int j = 0; j <= i; ++j)
    35             c[i + 1][j] += c[i][j], c[i + 1][j + 1] += c[i][j];
    36     for (int i = 1; i <= n; ++i)
    37         ++num[s[i] - '0'];
    38     ans = 0;
    39     for (int i = 1; i <= n; ++i){
    40         for (int j = 0; j < s[i] - '0'; ++j)
    41             if (num[j]){
    42                 --num[j];
    43                 ans += calc(n - i);
    44                 ++num[j];
    45             }
    46             --num[s[i] - '0'];
    47     }
    48     printf("%lld
    ", ans);
    49     return 0;
    50 }
    View Code
    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    关于java集合框架(二):List
    仪式感
    java的foreach(增强for循环)
    关于Java集合框架(一):概述与Set
    重新开始
    简单fork循环分析
    fork,写时复制(copy-on-write),vfork
    树莓派换源
    Windows下TexLive2018环境配置及检测
    Linux下高精度时间
  • 原文地址:https://www.cnblogs.com/rausen/p/4345405.html
Copyright © 2011-2022 走看看