zoukankan      html  css  js  c++  java
  • hdu 2082 找单词

    来源:http://acm.hdu.edu.cn/showproblem.php?pid=2082

    qscvideo讲解:https://www.bilibili.com/video/av4356817/

    母函数  也就是所谓的生成函数

    通过(1+x)(1+x+x2)将排列组合问题 换成求多项式系数的问题? 大概是这样子的吧

    #include<bits/stdc++.h>
    using namespace std;
    int s[30],s1[60],s2[60];
    
    void init()
    {
        for(int i=0;i<60;i++)
            s1[i] = s2[i] =0;
    
    }
    
    int main ()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            init();
            for(int i=1;i<=26;i++)
                scanf("%d",&s[i]);
    
            s1[0] = 1;//因为不论多少1相乘都是1
            for(int i=1;i<=26;i++)
            {
                for(int j=0;j<=50;j++)
                {
                    for(int k=0;k<=s[i] && k*i+j<=50;k++)
                    {
                        s2[k*i+j] += s1[j];//s1存储每个多项式相乘的结果,s2存储每次相乘的中间结果
                    }
                }
                for(int j=0;j<=50;j++)
                {
                    s1[j] = s2[j];
                    s2[j] = 0;
                }
            }
            int res =0;
            for(int i=1;i<=50;i++)
                res+=s1[i];
            printf("%d
    ",res);
        }
    }

     

  • 相关阅读:
    POJ 1144 Network(割点)
    POJ 3177 Redundant Paths & POJ 3352 Road Construction(双连通分量)
    ASCII码
    数组
    Java语法基础
    eclipse汉化过程
    指针
    面向对象
    第一课JAVA开发环境配置
    初学编写JAVA程序
  • 原文地址:https://www.cnblogs.com/Draymonder/p/7357201.html
Copyright © 2011-2022 走看看