首页 > 其他分享 >T404546 亮亮的玫瑰问题 2 题解

T404546 亮亮的玫瑰问题 2 题解

时间:2023-12-08 22:13:04浏览次数:33  
标签:ch T404546 int 题解 亮亮的 while 种花 gc

再次被初中的自己搏杀,想到网络流去了

Link

T404546 亮亮的玫瑰问题 2

Question

有 \(n\) 种花,第 \(i\) 种花有 \(a_i\) 个,求需要摆 \(m\) 朵花的方案数

Solution

定义 \(F[i][j]\) 表示前 \(i\) 种花,已经摆了 \(j\) 个的方案数

枚举第 \(i\) 种花需要摆多少个 \(k\)

所以 \(F[i][j]=\sum\limits_{k=0}^{min(j,a[i])} F[i-1][j-k]\)

答案就是 \(F[n][m]\)

Code

#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
const LL TT=1e6+7;
const int maxn=1e2+4;
struct IO{
    static const int S=1<<21;
    char buf[S],*p1,*p2;int st[105],Top;
    ~IO(){clear();}
    inline void clear(){fwrite(buf,1,Top,stdout);Top=0;}
    inline void pc(const char c){Top==S&&(clear(),0);buf[Top++]=c;}
    inline char gc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
    inline IO&operator >> (char&x){while(x=gc(),x==' '||x=='\n'||x=='r');return *this;}
    template<typename T>inline IO&operator >> (T&x){
        x=0;bool f=0;char ch=gc();
        while(ch<'0'||ch>'9'){if(ch=='-') f^=1;ch=gc();}
        while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=gc();
        f?x=-x:0;return *this;
    }
    inline IO&operator << (const char c){pc(c);return *this;}
    template<typename T>inline IO&operator << (T x){
        if(x<0) pc('-'),x=-x;
        do{st[++st[0]]=x%10,x/=10;}while(x);
        while(st[0]) pc('0'+st[st[0]--]);return *this;
    }
}fin,fout;

int n,m;
int a[maxn];
LL F[maxn][maxn];
int main(){
    fin>>n>>m;
    for(int i=1;i<=n;i++) fin>>a[i];
    F[0][0]=1;
    for(int i=1;i<=n;i++)
        for(int j=0;j<=m;j++)
            for(int k=0;k<=min(j,a[i]);k++)
                F[i][j]=(F[i][j]+F[i-1][j-k])%TT;
    fout<<F[n][m]<<'\n';
    return 0;
}

标签:ch,T404546,int,题解,亮亮的,while,种花,gc
From: https://www.cnblogs.com/martian148/p/17889149.html

相关文章

  • [ARC164E] Segment-Tree Optimization 题解
    题目链接题目链接题目解法一个自认为比较自然的解法这种一段序列切成两部分的问题首先考虑区间\(dp\)令\(f_{l,r}\)为\([l,r]\)能构成的最小深度,\(g_{l,r}\)为在\(f_{l,r}\)最小的情况下最少的最大深度的点的个数转移枚举\(k\)即可需要在下面是叶子的时候处理一......
  • 2023.12.7 挑战杯题解
    选择题T1有序实数对即为数,坐标系中的点\(P\)即为形。故选择A。T2\(9.46\times10^{12}=9460000000000\)为\(13\)位数所以选D。T3如图所示,过点\(D\)作\(DE\botAB\),设\(AE=x\),在\(Rt\DeltaADE\)中利用勾股定理列方程为\((x-1)^2+10^2=x^2\),解得\(x=\frac{101}{2......
  • PTA-2023第十二次练习题目题解
    PTA-2023第十二次练习题目题解(祝大家机考顺利)以下代码已做防抄袭处理,切勿抄袭。注意:手机端因为屏幕限制,代码会有(不希望的)换行。解决方案:1.建议使用电脑端打开。2.点击代码进入全屏观看。6-24实验8_3_设计函数利用冒泡排序的思想,将每一列的最小值放到每列的最后一个位置。voi......
  • [AGC049D] Convex Sequence 题解
    题目链接点击打开链接题目解法好题!!考虑原题的限制相当于原序列下凸,即差分数组单调考虑把原序列在第一个最小值处割成\(2\)半因为原序列是凸的,所以非最小值的长度是\(\sqrt{2m}\)级别的这可以让我们\(dp\)差分数组,即求满足\(\sum\limits_{i=1}^{n'}ib_i=m'\)的\(b......
  • [ARC165E] Random Isolation 题解
    题目链接点击打开链接题目解法略有些套路的概率题,不过中间的把操作序列看成排列的操作还是很妙的首先套路的考虑期望的线性性,有两个方式:把贡献放在点上或点集上,这里采用后面的方式做对于每一个树上的集合\(S\),假设大小为\(n\),相邻的点为\(m\)考虑这个集合独立的限制为:相......
  • Emiya今天的饭 题解
    题目考虑条件主要食材最大的不超过总菜数的一半,不好处理,但存在主要食材最大的超过总菜数的一半是好处理的,容斥即可。首先计算所有情况,由于题目要求每个烹饪方式最多使用一次,很明显可以记\(g_i\)表示前\(i\)种烹饪方式的方案数。\[g_i=g_{i-1}+g_{i-1}\times\sum_{j=1}^......
  • 虚拟机运行Hadoop | 各种问题解决的心路历程
    ps:完成大数据技术实验报告的过程,出项各种稀奇古怪的问题。(知道这叫什么吗?经济基础决定上层建筑,我当时配置可能留下了一堆隐患,总之如果有同样的问题,希望可以帮到你)一、虚拟机网络连接不通的各种情况我这里遇到的是,三台虚拟机,两台piing百度不同原因:改了下内存,重启就又未知的网......
  • 【luogu题解】U388218 数数
    数数题目描述给定n个不超过1.5×10⁹的自然数。求这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。输入格式输入的第1行是整数n,表示自然数的个数。第2行到第n+1行每行一个自然数。输出格式输出文件包含m行(m为n个自然数中不相同数的个......
  • [ARC121F] Logical Operations on Tree 题解
    题目链接点击打开链接题目解法比较好的题首先要发现一个性质是:先删AND边,再删OR边最优小证一下:分类讨论AND边两端的数字情况\(0\&0\)左右两端虽然可能可以把\(1\)OR过来,但这种情况先做\(\&\),也一定可以OR得到\(1\)\(0\&1\)左边可能可以\(OR\)得到\(1......
  • T403510 平面划分(Hard) 题解
    LinkT403510平面划分(Hard)Question平面上由\(n\)条这样的折线所界定区域的最大的个数\(Z_n\)是多少。Solution先思考一个简单的问题平面上\(n\)条直线所界定的区域最大个数\(L_n\)是多少?我们考虑假设已经有\(n-1\)条直线,我们需要画一条直线,这条直线最多和\(n......