首页 > 其他分享 >食物

食物

时间:2024-08-08 09:08:23浏览次数:12  
标签:方案 系数 多项式 重量 砝码 食物 物品

给定一个有穷或者让无穷数列{\(a_0,a_1,...\)},则称\(g(x)=a_0+a_1x+a_2x^2+...(-1<x<1)\)为原数列的一个生成函数

本质就是将问题转换为多项式问题,从而利用多项式的性质去解决问题

一些生成函数的化简见OI-wiki封闭形式

例题:现有\(1g,2,g,3g\)的砝码各一个,问能称出多重的物品,以及每个重量的物品被称出的方法数

我们先用DP的角度看待这个问题,设\(f[i][j]\)表示用前\(i\)个砝码可以称出重量为\(j\)的物品的方案数,则\(f[i][j]=f[i-1][j-weight[i]]+f[i-1][j]\)

然后我们再用多项式的角度去看待这个问题,设系\(a_i\)表示称出重量为\(i\)的物品的方案数,此时我们像DP一样,一个阶段一个阶段地考虑问题。对于第一个砝码,有\(f_1(x)=1+x\)(常数项的系数\(a_0\)为\(1\),表示用第一个砝码称出重量为\(0\)的物品的方案数是\(1\);\(x\)的系数\(a_1\)为\(1\),表示用第一个砝码称出重量为\(1\)的物品的方案数是\(1\));对于前两个砝码有\(f_2(x)=f_1(x)(1+x^2)=1+x+x^2+x^3\)(\((1+x^2)\)与上面的解释一样,这里之所以要两者乘起来就是利用了多项式相乘指数相加的原理,即\(f_1(x)\)中的\(a_ix^i\)的\(a_i\)已经存储了用前一个砝码称出重量为\(i\)的物品的方案数,我们现在又知道了用第二个砝码称出重量为\(j\)的方案数\(a_j\),那么这一个组合对“用前两个砝码称出重量为\(i+j\)的物品的方案数”的贡献就是\(a_ia_j\),此时系数刚好相乘即乘法原理而\(x\)的指数相加刚好表示称出\(i+j\)的物品的方案数);对于前三个砝码有\(f_3(x)=f_2(x)(1+x^3)=1+x+x^2+2x^3+x^4+x^5+x^6\)。最终得到的这个式子的系数就分别说明了方案数;或者也可以用整体来考虑,直接写出\(f(x)=(1+x)(1+x^2)(1+x^3)\),\(f(x)\)的展开式是从三个因子中各选一项来组成的,而三个因子各选一项也就代表了三个砝码的不同选择,相乘时用了乘法原理,合并同类项时用了加法原理

又比如三个砝码的数量分别是\(2,+\infty,1\),那么生成函数就是\(f(x)=(1+x+x^2)(1+x^2+x^4+x^6+...)(1+x^3)\)

另一道例题:现有\(n\)个不同的苹果,每种苹果都有无穷多个,选出\(k\)个苹果,请求出方案数,要求用生成函数解决这个问题

不难知道\(f_i(x)=(1+x+x^2+...)=\frac{1}{1-x}\),于是\(f(x)=\overset{n}{\underset{i=1}{\prod}}f_i(x)\)

用组合数学的角度看问题,即\(x_1+x_2+...+x_n=n+k(x_i≥1)\),隔板法求得为\(C_{n+k-1}^{n-1}\),也就是说\(f(x)\)展开式\(x^k\)对应的系数就是\(C_{n+k-1}^{n-1}\)(这也就是OI-wiki封闭形式五)

理解了上面的过程后,这道题目就非常简单了,具体见OI-wiki的解答就好了

注意化简的过程,最好把有穷级数也写成分数的形式,这样更好化简

标签:方案,系数,多项式,重量,砝码,食物,物品
From: https://www.cnblogs.com/dingxingdi/p/18348221

相关文章

  • 题解_P2024 [NOI2001] 食物链
    [NOI2001]食物链题目描述动物王国中有三类动物\(A,B,C\),这三类动物的食物链构成了有趣的环形。\(A\)吃\(B\),\(B\)吃\(C\),\(C\)吃\(A\)。现有\(N\)个动物,以\(1\simN\)编号。每个动物都是\(A,B,C\)中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这......
  • P2024 [NOI2001] 食物链
    原题链接题解关系具有矢量特性,因此可以带权并查集维护code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;intfa[50006];intval[50006];intfinds(intnow){if(now==fa[now])returnnow;inttem=fa[now];fa[now]=finds(fa[now])......
  • [lnsyoj110/luoguP2024]食物链
    题意原题链接三类元素\(a,b,c\)满足\(a\tob\),\(b\toc\),\(c\toa\)。现在共有\(n\)个元素,给出\(m\)条关系\(x\toy\)或\(x\)与\(y\)种类相同,输出非法或与前面所属关系相矛盾的关系数量sol并查集可以处理“朋友的朋友是朋友”这样的传递关系,却不能处理“敌人......
  • 鸿蒙案例-食物列表页和底部Panel的实现
    前言  食物列表页是健康和饮食管理应用中的一个关键功能,它允许用户浏览、搜索和选择不同的食物项来记录他们的饮食习惯。食物列表以列表形式展示食物名称、图片和简要信息。点击食物项后,展示详细的营养信息,包括热量、脂肪、碳水化合物、蛋白质等。  食物列表页是用户......
  • Acwing240食物链
    题目动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C吃 A现有 N 个动物,以 1∼N 编号。每个动物都是 A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是......
  • 食物链题解
    由题得,所有动物整体关系如上。起初每个动物相互时间没有关系,bb[i]=i。对于x与y:如果它们是同类即x到y的距离为$0$,或者转了几圈,一圈距离为$3$,即模$3$余$0$。如果x捕食y,就是x到y距离模$3$余$1$。对x与y操作时:如果它们没有关系(它们不被之前给出的某......
  • 【食物识别】flask部署
    文章目录flask安装创建flask应用路径问题选择模型并加载接收请求参数处理推理结果返回参数flask安装pipinstallflask创建flask应用app.pyfromflaskimportFlask,request,jsonify,send_fileimporttorchfromPILimportImageimportioimportbase6......
  • 洛谷P4017 最大食物链计数
    题目信息题目要求样例输入/输出 算法简介 要知道题目需要用到什么样的算法,首先得捋清楚题目的意思比如这个题目,我们读题后可以获得这样的信息:(1)节点之间构成有向边(2)所有边不会构成环(3)需要求的所有的边没有边权而且一定是从入度为零的节点到出度为零的节点基......
  • 食物识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
    一、介绍食物识别系统。该项目通过构建包含11种常见食物类别(包括'Bread','Dairyproduct','Dessert','Egg','Friedfood','Meat','Noodles-Pasta','Rice','Seafood','Soup','Vegeta......
  • P2024 [NOI2001] 食物链
    原题链接题解带权并查集的应用,普通的并查集只能表示结点间的一种关系(如同一集合中的都是朋友)。而带权并查集的结点权值表示该结点与根结点的关系。相对应,带权并查集的路径压缩也复杂了一点。code #include<bits/stdc++.h>usingnamespacestd;constintN=5e4+5;intn,k......