首页 > 其他分享 >【蓝桥杯集训·每日一题】AcWing 4496. 吃水果

【蓝桥杯集训·每日一题】AcWing 4496. 吃水果

时间:2023-05-29 22:01:12浏览次数:47  
标签:水果 int 左边 样例 拿到 蓝桥 4496 小朋友 AcWing

写在前面

本人CSDN博客主页:这里

一、题目

1、原题链接

4496. 吃水果

2、题目描述

n 个小朋友站成一排,等着吃水果。

一共有 m 种水果,每种水果的数量都足够多。

现在,要给每个小朋友都发一个水果,要求:在所有小朋友都拿到水果后,恰好有 k 个小朋友拿到的水果和其左边相邻小朋友拿到的水果不同(最左边的小朋友当然不算数,即最左边的小朋友不包含在 k 个小朋友内)。

请你计算,一共有多少种不同的分发水果的方案

输入格式

一行,三个整数 n,m,k。

输出格式

一个整数,表示合理的分发水果的方案总数量对 998244353 取模后的结果。

数据范围

前 5 个测试点满足 1≤n,m≤5所有测试点满足 1≤n,m≤2000,0≤k≤n−1

输入样例1

3 3 0

输出样例1

3

输入样例2

3 2 1

输出样例2

4

二、解题报告

1、思路分析

思路来源:y总讲解视频 y总yyds

(1)第一个小朋友(最左边)拿到水果的情况共有m种。 (2)因为题目中的k个小朋友不包括最左边的小朋友,所以先在n-1个小朋友中选择k个小朋友,这k个小朋友和其左边相邻的小朋友的水果不同,总共【蓝桥杯集训·每日一题】AcWing 4496. 吃水果_i++种情况。而这k个小朋友由于要和其左边的小朋友拿的水果不同,所以这k个人拿到的水果种类的情况总共(m-1)k种情况。所以总的情况数就有【蓝桥杯集训·每日一题】AcWing 4496. 吃水果_i++(m-1)k种。 (3)剩下的n-k-1个小朋友,拿到的水果和其左边小朋友的水果一样,所有他们拿到的水果是唯一确定的,只要确定了(1)(2)的情况总数,总的情况数也就确定了。 (4)所以答案即为【蓝桥杯集训·每日一题】AcWing 4496. 吃水果_i++m(m-1)k

2、时间复杂度

时间复杂度为O(n2)

3、代码详解

#include <iostream>
using namespace std;
typedef long long LL;
const int N=2010,mod=998244353;
int c[N][N];
int n,m,k;
int main(){
    cin>>n>>m>>k;
    //求组合数
    for(int i=0;i<=n-1;i++){
        for(int j=0;j<=i&&j<=k;j++){
            if(!j) c[i][j]=1;
            else c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
        }
    }
    //求答案注意类似下面第二行不要写成ans*=m%mod 等形式,因为%的优先级高于*=,就会造成先取模再乘,而我们是要先乘再取模
    LL ans=c[n-1][k]%mod;
    ans=ans*m%mod;
    for(int i=0;i<k;i++){
        ans=ans*(m-1)%mod;
    }
    cout<<ans;
    return 0;
}

三、知识风暴

求组合数

  • 基本思想:利用公式【蓝桥杯集训·每日一题】AcWing 4496. 吃水果_i++_04=【蓝桥杯集训·每日一题】AcWing 4496. 吃水果_测试点_05+【蓝桥杯集训·每日一题】AcWing 4496. 吃水果_i++_06递推,每个状态可以由其前面的转态推导出来,类似dp。

标签:水果,int,左边,样例,拿到,蓝桥,4496,小朋友,AcWing
From: https://blog.51cto.com/u_15720469/6374087

相关文章

  • 第十二届蓝桥杯c++b组国赛题解(还在持续更新中...)
    试题A:带宽解题思路:由于小蓝家的网络带宽是200Mbps,即200Mb/s,所以一秒钟可以下载200Mb的内容,根据1B=8b的换算规则,所以200Mb=200/8MB=25MB。所以小蓝家的网络理论上每秒钟最多可以从网上下载25MB的内容。代码实现:#include<iostream>#include<algorithm>usingnamespacestd......
  • 前缀和 (Acwing_796 子矩阵的和)
    题目1.S[i,j]即为图1红框中所有数的的和为:S[i,j]=S[i,j−1]+S[i−1,j]−S[i−1,j−1]+a[i,j]2.(x1,y1),(x2,y2)这一子矩阵中的所有数之和为:S[x2,y2]−S[x1−1,y2]−S[x2,y1−1]+S[x1−1,y1−1]#include<iostream>usingnamespacestd;constintN=1e3+10;int......
  • 【蓝桥杯 2019 省 A】修改数组【并查集】
    链接https://www.luogu.com.cn/problem/P8686题意给你\(n\)个数a[1...n],从\(a_2\)开始,如果和之前的某个数具有相等的值,就一直让\(a_i=a_i+1\),直到前面的任何一个数都和它不相等\(1\leqn\leq10^5\),\(1\leqa_i\leq10^6\)问最后的序列是什么思路暴力做法......
  • 蓝桥杯----2022国C
    《斐波那契与7》写的时候第一次尝试了暴力,跑了一个小时多都没有跑完查了一下,大概1s可以跑1e8条指令如果真要跑的话 202202011200,应该跑到比赛结束应该内跑完(希望电脑不会炸) 暴力还是不合理的,遇到这种情况试一下循环节对于斐波那契数列Fn=Fn-1+Fn-2所......
  • 【蓝桥杯集训·每日一题】AcWing 4309. 消灭老鼠
    写在前面本人CSDN博客主页:这里一、题目1、原题链接4309.消灭老鼠2、题目描述约翰的农场可以看作一个二维平面。农场中有n个老鼠,在毁坏着农田。第i个老鼠的位置坐标为(xi,yi)。不同老鼠可能位于同一位置。在(x0,y0)处,装有一个双向发射的激光枪,该位置没有老鼠。激光枪每次发......
  • 【蓝桥杯集训·每日一题】AcWing 3625. 幂次方
    写在前面本人CSDN博客主页:这里一、题目1、原题链接3625.幂次方2、题目描述对任意正整数N,计算XNmod233333的值。输入格式共一行,两个整数X和N。输出格式共一行,一个整数,表示XNmod233333的值。数据范围1≤X,N≤109输入样例:25输出样例:32二、解题报告1、思路分析(1)快速幂模板题......
  • 【蓝桥杯入门不入土】变幻莫测的链表
    @[toc]一:链表的类型单链表什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。如图所示:双链表单链表中的指针域只......
  • Acwing 798.差分矩阵(模板)
    题目#include<iostream>usingnamespacestd;constintN=1010;intn,m,q;inta[N][N],b[N][N];voidinsert(intx1,inty1,intx2,inty2,intc){b[x1][y1]+=c;b[x2+1][y1]-=c;b[x1][y2+1]-=c;b[x2+1][y2+1]+=......
  • 蓝桥杯2022年第十三届决赛真题-斐波那契数组(动态规划)
    题目描述如果数组A=(a0,a1,···,an−1)满足以下条件,就说它是一个斐波那契数组:n≥2;a0=a1;对于所有的i(i≥2),都满足ai=ai−1+ai−2。现在,给出一个数组A,你可以执行任意次修改,每次修改将数组中的某个位置的元素修改为一个大于0的整数。请问最......
  • AcWing905.区间选点
    题目详情知识点区间贪心为什么叫贪心呢?——短视,每次只是在看眼前的东西,在眼前的决策中选一个最优解。而贪心就是根据这种策略能够走到全局最优解的方法【如果用函数图像来表示就是一个单峰的图】贪心的普遍方案一般来说贪心问题没有思路的时候我们可以先随便试一下,再去举一......